docker運(yùn)行容器前(docker run...命令運(yùn)行容器)需要本地存在對應(yīng)的鏡像丁鹉,如果鏡像在本地不存在矾缓,docker會嘗試先從默認(rèn)鏡像倉庫下載(默認(rèn)使用docker hub公共注冊服務(wù)器中的倉庫)朋沮,用戶也可以通過配置,使用自定義地鏡像倉庫缔恳。
1、獲取鏡像
docker pull IMAGE[:TAG]
如果不顯示地指定TAG洁闰,則默認(rèn)會選擇latest標(biāo)簽歉甚,即下載倉庫中最新版本的鏡像。例如pull ubuntu鏡像扑眉,IMAGE默認(rèn)的全名為registry.hub.docker.com/ubuntu:latest纸泄,即從默認(rèn)的服務(wù)器registry.hub.docker.com中的ubuntu倉庫來下載標(biāo)記為latest的鏡像。
用戶也可以選擇從其他注冊服務(wù)器的倉庫下載腰素,此時聘裁,需要在倉庫名稱前指定完整讓的倉庫注冊服務(wù)器地址。例如從DockerPool社區(qū)的鏡像源dl.dockerpool.com下載最新的ubuntu鏡像:docker pull dl.dockerpool.com:5000/ubuntu
2弓千、查看鏡像信息
docker images :列出本地主機(jī)上已有的鏡像信息
- repository:來自于哪個倉庫咧虎,比如ubuntu倉庫
- tag:鏡像的標(biāo)簽信息,比如14.04
- image id:鏡像的唯一ID號
- created:創(chuàng)建時間
- virtual size:鏡像大小
docker tag:為本地鏡像添加新的標(biāo)簽计呈。例如添加一個屬于我的ubuntu標(biāo)簽
docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:bamu
3砰诵、搜尋鏡像
docker search TERM:搜索遠(yuǎn)端倉庫中共享的鏡像,默認(rèn)搜索Docker Hub官方倉庫中的鏡像捌显。
支持的參數(shù)如下:
--automated=false 僅顯示自動創(chuàng)建的鏡像
--no-trunc=false 輸出信息不截斷顯示
-s, --stars=0 指定僅顯示評價為指定星級以上的鏡像
可以看到返回了很多包含mysql關(guān)鍵字的鏡像茁彭,輸出的結(jié)果按照星級評價進(jìn)行排序。其中包括鏡像名字扶歪、描述理肺、星級、是否官方創(chuàng)建善镰、是否自動創(chuàng)建等妹萨。官方的鏡像說明該鏡像是由官方項(xiàng)目組創(chuàng)建和維護(hù)的,automated資源則允許用戶驗(yàn)證鏡像的來源和用途炫欺。
4乎完、刪除鏡像
docker rmi
docker rmi IMAGE [IMAGE...],其中IMAGE可以為標(biāo)簽或ID
- 使用鏡像標(biāo)簽刪除鏡像:docker rmi命令只是刪除了該鏡像多個標(biāo)簽中的指定標(biāo)簽而已品洛,并不影響鏡像文件树姨。當(dāng)鏡像只剩下一個標(biāo)簽的時候就要小心了,此時再使用docker rmi命令會徹底刪除該鏡像文件桥状。
- 使用鏡像ID刪除鏡像:會先嘗試刪除所有指向該鏡像的標(biāo)簽帽揪,然后刪除鏡像文件本身。
注意:當(dāng)有該鏡像創(chuàng)建的容器存在時(無論該容器正在運(yùn)行中還是已經(jīng)停止)辅斟,鏡像文件默認(rèn)是無法被刪除的转晰。
如果想要強(qiáng)行刪除鏡像,可以使用-f參數(shù):docker rmi -f ubuntu。但不推薦使用-f參數(shù)強(qiáng)制刪除查邢,因?yàn)檫@樣往往會造成一些遺留問題蔗崎。假設(shè)我們使用-f參數(shù)強(qiáng)制刪除,再次使用docker images命令查看本地鏡像情況侠坎,會發(fā)現(xiàn)一個標(biāo)簽為<none>的臨時鏡像蚁趁,原來剛才被強(qiáng)制刪除的鏡像換了新的ID繼續(xù)存在系統(tǒng)中裙盾。
因此实胸,正確的做法是,先刪除依賴該鏡像的所有容器番官,再刪除該鏡像庐完。
5、創(chuàng)建鏡像
創(chuàng)建鏡像的方式有三種:
- 基于已有鏡像的容器創(chuàng)建
- 基于本地模板導(dǎo)入
- 基于Dockerfile創(chuàng)建
本節(jié)介紹前兩種徘熔,第三種方式在將來的文章中詳細(xì)講解门躯。
基于已有的容器創(chuàng)建
該方法使用docker commit 命令,格式為:docker commit [OPTIONS] CONTAINERS [REPOSITORY[:TAG]]酷师,參數(shù)信息如下:
- -a, --author="" 作者信息
- -m,--message="" 提交消息
- -p,--pause=true 提交時暫停容器運(yùn)行
實(shí)踐一下:
1)啟動容器并新建文件:
docker run -ti ubuntu /bin/bash
touch test
exit
此時該容器跟原鏡像啟動的容器相比讶凉,已經(jīng)發(fā)生改變∩娇祝可以使用docker commit 命令來提交為一個新的鏡像懂讯,提交時可以使用ID或名稱來指定容器。
2)創(chuàng)建新的鏡像
docker commit -m "new image" -a "bamu" container01 ubuntu_bamu
3)查看本地鏡像列表台颠,即可看到新創(chuàng)建的鏡像
docker images
本地模板導(dǎo)入
也可以直接從一個操作系統(tǒng)模板文件導(dǎo)入一個鏡像褐望,推薦使用OpenVZ提供的模板來創(chuàng)建。OpenVZ模板的下載地址為:https://openvz.org/Download/templates/precreated串前,通過該地址下載了一個ubuntu-14.04模板壓縮包后瘫里,可以使用如下命令導(dǎo)入:
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
然后查看新導(dǎo)入的鏡像,已經(jīng)在本地存在了荡碾。
6谨读、存出和載入鏡像
可以使用docker save和docker load命令來存出和載入鏡像
存出鏡像
存出本地的ubuntu:14.04鏡像為文件ubuntu_14.04.tar:docker save -o ubuntu_14.04.tar ubuntu:14.04
載入鏡像
將文件ubuntu_14.04.tar導(dǎo)入鏡像到本地鏡像列表:docker load --input ubuntu_14.04.tar 或 docker load < ubuntu_14.04.tar
這將導(dǎo)入鏡像以及其相關(guān)的元數(shù)據(jù)信息(包括標(biāo)簽等),可以使用docker images命令查看坛吁。
上傳鏡像
默認(rèn)上傳至DockerHub官方倉庫(需要登錄)漆腌,命令格式為docker push NAME[:TAG]
用戶在DockerHub網(wǎng)站注冊后,即可上傳自制的鏡像阶冈,例如用戶user上傳本地鏡像test:latest鏡像闷尿,可以先添加標(biāo)簽user/test:latest,然后用docker push 命令上傳鏡像女坑。
docker tag test:latest user/test:latest
docker push user/test:latest