Docker images 介紹:
docker images 是docker 的三大組件之一
docker把下載好的鏡像上傳到docker本地鏡像倉庫中,如果本地鏡像倉庫中不存在需要用到的鏡像,docker會從一個鏡像庫中去下載所需鏡像,默認的公共倉庫是Docker HUB。
Docker image 的內容:
使用和管理本地主機上images
創建一個基礎的images
上傳images到docker hub(公共images倉庫)
列出本地主機上已經存在的images
(1.)使用Docker images 顯示本機上的images
EPOSITORY:來自於哪個倉庫,比如Docker.io/centos
TAG的標記,比如 latest
IMAGE ID:鏡像的ID號
CREATED:創建時間
SIZE:鏡像的大小
注意:
一個倉庫可能有多個發行版本,比如Ubuntu,他們有10.04、12.04、12.10、
13.04、14.04,每個發行版本的標記都不同,可以使用tag命令來指定images標記
如果不指定具體的發行版本的話,例如就使用Ubuntu,那麼Docker會使用最新的發
行版Ubuntu:latest
(2.)獲取images
我們如何獲取新的images呢?當我們啓動容器使用的image不再本地主機上時,Docker會自動下載它們。這時很耗時,我們可以使用Docker pull命令預先下載我們需要的image
(3.)查找images
Docker的一個特點是很多人因爲各種不同的用途創建了各種不同的images。
它們都被上傳到了Docker hub公有倉庫上,我們可以在Docker hub 的網站上來查找它們。
使用Docker search命令
例如:當我們需要ruby和sinatra作爲web應用程序開發時,我們使用Docker search
來搜索合適的image,使用關鍵字Sinatra。
我們看到了返回了很多包含Sinatra的images。其中包括image名字、描述、星級(表
示該image的受歡迎程度)、是否官方創建、是否自動創建。官方的images是
stackbrew項目組創建和維護的,automated資源允許你驗證image的來源和內容。
到目前爲止,我們看到了2種images資源,比如Ubuntu,被稱爲基礎或者根鏡像。這
些基礎鏡像是Docker公司創建、驗證、支持、提供。他們往往使用一個單詞作爲他
們的名字。還有一種類型,比如我們選擇的training/Sinatra鏡像。他是由Docker的用
戶創建並維護的,你可以通過指定image名字的前綴來指定他們,比如training。
(3.)下載images
現在我們指定了一個image, training/Sinatra,我們可以使用docker pull命令來下載它。
下載過程中,會輸出獲取鏡像的每一層信息
該命令實際上相當於#Docker pull register.hub.docker.com/ubuntu:12.04 命令,即從註冊服務器register.hub.docker.com 中的Ubuntu倉庫來下載標記爲 12.04 的鏡像。
有時候官方倉庫註冊服務器下載較慢,可以從其他倉庫下載。 從其他倉庫下載時需要指定完整的倉庫註冊服務器地址。
例如: #docker pull dl.dockerpool.com:5000/ubuntu:12.04
查看完整信息:
當鏡像下載成功後,你可以看到12位的hash值鏡像
像1d551d635e99,這是下載完整的鏡像的精簡ID,這些短的鏡像ID是完整鏡像ID的前12個字符。
可以使用Docker inspect 或者Docker images --no-trunc來獲得完整的鏡像ID
Docker inspect:
或者
Docker images --no-trunc
創建images:
1.第一種方法:使用Docker commit 來擴展一個新的images
(1.)先使用images啓動容器,進到容器裏面
(2.)在容器中添加mariadb-server應用。
注意:記住剛纔的容器的ID號
安裝完成後退出,現在容器已經改變了,更新後的結果提交到新的image。
使用Docker commit 命令來提交相應的副本。
其中 -m 來指定提交信息的說明信息,跟使用的版本控制工具一樣;-a 可以指定更新的用戶信息;之後是用來創建鏡像的容器ID;最後指定目標鏡像的倉庫名和tag標記信息。
使用Docker images查看新創建的鏡像:
可以使用新創建好的鏡像來啓動容器:
2.第二種方法:從dockefile來創建image
(1.)創建一個目錄和一個dockefile文件
內容如下:
dockerfile基本語法:
使用#來註釋
FROM指令告訴docker使用哪個鏡像作爲基礎鏡像
MAINTAINER是維護者信心
RUN開頭的指令會在創建中運行,比如安裝一個軟件包,在這裏使用yum來安裝了一些軟件
編寫完成dockerfile後可以使用docke build 來生成鏡像。
其中 -t 標記來添加tag,指定新的鏡像的用戶信息。
“.”是dockerfile所在的路徑(當前目錄),也可以替換爲一個具體的dockefile路徑。
可以看到build進程在執行操作。他要做的第一件事情就是上傳這個dockefile內
容,因爲所有的操作都要依據dockefile來進行。然後,dockefile中的指令被一條一
條的執行。每一步都創建了一個新的容器,在容器中執行指令並提交修改(就跟
之前的docker commit一樣)。當所有的指令都執行完畢之後,所有中間步驟所產
生的容器都被刪除和清理了。最後返回了最終的鏡像ID。
*注意:一個鏡像不能超過127層。
查看新生成的鏡像:
還可以用docker tag 命令來修改鏡像的標籤:
修改前:
修改後:
3.從本地文件系統導入
要從本地文件系統導入一個鏡像,可以使用openvz(容器虛擬化的先鋒技術)的模板來創建
openvz的模板下載地址爲http://openvz.org/Download/template/precreated。
先下載了一個centos6.tar.gz的鏡像,之後使用以下命令導入到本地鏡像庫
4.上傳鏡像:
用戶可以通過docker push 命令,把自己創建的鏡像上傳到倉庫中來共享。
例如: 用戶在Docke hub上進行註冊完成後,可以推送自己的鏡像到docker hub倉庫中。
有兩種方式可以創建和註冊一個docker hub 倉庫賬戶:
1.通過網站,(https://hub,docker.com)
2.通過命令行,輸入docker login命令來創建一個Docker HUB 賬號
#docker login
郵箱確認:
一旦你填寫完畢表格,請查看你的電子郵件,通過點擊歡迎信息中的鏈接來激活您的賬戶。
基本思路步驟:
(1.)首先註冊docker的賬戶,然後使用docker login登錄。
下一步
上傳結果:
如果有其他倉庫,就輸入其他倉庫名
例如:docker push docker.sina.com.cn:5000/commit
5.用docker rmi 移除本地images
注意:在刪除images之前要先用docker rm 刪掉依賴於這個images容器
刪除容器:
刪除鏡像:
6.導出/導入鏡像:
當需要把一臺機器上的鏡像遷移到另一臺機器上的時候,需要導出鏡像、導入鏡像。
導出鏡像:
導入鏡像:
可以使用docker load 從導出的本地文件中再導入到本地鏡像庫。
例如:
或者是