Docker 鏡像、容器、倉庫的概念
Docker鏡像
Docker鏡像(Image)類似于虛擬機的鏡像,可以將他理解為一個面向Docker引擎的只讀模板,包含了文件系統。
例如:一個鏡像可以完全包含了Ubuntu操作系統環境,可以把它稱作一個Ubuntu鏡像。鏡像也可以安裝了Apache應用程序(或其他軟件),可以把它稱為一個Apache鏡像。
鏡像是創建Docker容器的基礎,通過版本管理和增量的文件系統,Docker提供了一套十分簡單的機制來創建和更新現有的鏡像。用戶可以從網上下載一個已經做好的應用鏡像,并通過命令直接使用。總之,應用運行是需要環境的,而鏡像就是來提供這種環境。
Docker容器
Docker容器(Container)類似于一個輕量級的沙箱子(因為Docker是基于Linux內核的虛擬技術,所以消耗資源十分少),Docker利用容器來運行和隔離應用。
容器是從鏡像創建的應用運行實例,可以將其啟動、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。
可以吧每個容器看作一個簡易版的Linux系統環境(包括了root用戶權限、進程空間、用戶空間和網絡空間),以及與運行在其中的應用程序打包而成的應用盒子。
鏡像自身是只讀的。容器從鏡像啟動的時候,Docker會在鏡像的最上層創建一個可寫層,鏡像本身將保持不變。就像用ISO裝系統之后,ISO并沒有什么變化一樣。
Docker倉庫
Docker倉庫(Repository)類似與代碼倉庫,是Docker集中存放鏡像文件的場所。
有時候會看到有資料將Docker倉庫和注冊服務器(Registry)混為一談,并不嚴格區分。實際上,注冊服務器是存放倉庫的地方,其上往往存放著多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽(tag)來進行區分。例如存放Ubuntu操作系統鏡像的倉庫,稱為Ubuntu倉庫,其中可能包括14.04,12.04等不同版本的鏡像。
根據存儲的鏡像公開分享與否,Docker倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
目前,最大的公開倉庫是Docker Hub,存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括Docker Pool等,可以提供穩定的國內訪問。如果用戶不希望公開分享自己的鏡像文件,Docker也支持用戶在本地網絡內創建一個只能自己訪問的私有倉庫。
當用戶創建了自己的鏡像之后就可以使用push將它上傳到指定的公有或則私有倉庫。這樣用戶下次在另一臺機器上使用該鏡像時,只需將其從倉庫pull下來就可以了。
下面一篇文章介紹了有關上述概念的基本命令
Docker關于鏡像、容器、倉庫的基本命令
鏡像
1.獲取鏡像
$ docker pull dl.dockerpool.com:5000/ubuntu:14.04
dl.dockerpool.com為注冊服務器,5000為端口號,ubuntu為倉庫名稱,14.04是鏡像也是版本號
2.查看鏡像信息
列出本地主機已有的所有鏡像
$ docker images
更改變遷信息
$ docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
000為鏡像ID,顯示這個鏡像的詳細信息
$ docker inspect 000
3.搜尋鏡像
$ docker search mysql (輸出信息包括鏡像名字、描述、星級、是否為官方創建、是否自動創建)
4.刪除鏡像
$ docker rmi dl.dockerpool.com:5000/ubuntu:latest
注:當有該鏡像創建的容器存在時,鏡像文件默認是無法刪除的,所以刪除鏡像前最好是刪除所有依賴該鏡像的容器,請不要用強制刪除。
5.創建鏡像
新聞熱點
疑難解答