Docker基本概念
Docker鏡像
Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。
因為鏡像包含操作系統完整的 root 文件系統,其體積往往是龐大的,因此在 Docker 設計時,就充分利用 Union FS 的技術,將其設計為分層存儲的架構。所以嚴格來說,鏡像并非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現并非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。
Docker 容器
鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。
容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行于屬于自己的獨立的 命名空間。因此容器可以擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。
**按照 Docker 最佳實踐的要求,容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。所有的文件寫入操作,都應該使用 數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。
數據卷的生存周期獨立于容器,容器消亡,數據卷不會消亡。因此,使用數據卷后,容器可以隨意刪除、重新 run,數據卻不會丟失。**
Docker Registry
docker Registry上一個服務:如果需要在其它服務器上使用鏡像,我們就需要一個集中的存儲、分發鏡像的服務 。
一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。
通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。
mac系統安裝Docker
brew cask install docker
前提的安裝homebrew, 當然也可以?去官網上直接下載安裝,方法比較簡單。
可以通過如下命令查看安裝的信息
docker info
docker --version
docker-compose --version
docker-machine --version
我們先?試著安裝一下nginx?服務,就下面一行簡單的命令就可以搞定
docker run -d -p 80:80 --name webserver nginx
要停止 Nginx 服務器并刪除執行下面的命令:
docker stop webserver
docker rm webserver
鏡像加速器
如果在國內使用docker下載鏡像可能或很慢,那么我就需要配置鏡像加速器,?如果選用阿里的鏡像加速器的可以參考下面的地址
阿里鏡像加速器