創建倉庫:
docker run -d -p 5000:5000 -v /root/registry:/data/docker registry:2
將倉庫存放於容器內的/data/docker目錄下,如果容器被刪除,鏡像也會丟失,指定本地一個目錄/root/registry掛載到容器內的/tmp/registry下.
registry:2 起一個鏡像名
-d 后台執行
-p -P 指定容器暴露的端口。
-v 給容器掛載存儲卷,掛載到容器的某個目錄
制作鏡像:
docker commit 449d0022bafa 172.17.0.3:5000/linuxws
docker run -i -d -p 1880:80 -p 13306:3306 -p 122:22 -p 123:23 -p 69:69/udp -p 514:514/tcp -v /Users/apple/znms/03_code/trunk/z-nms:/var/www/html/z-nms -e "REMOTE_HOST=調試ip地址" --restart=always znms:v1
docker images : 列出本地鏡像。
格式:docker images [OPTIONS] [REPOSITORY[:TAG]]
-a : 列出本地所有鏡像
--digests: 顯示鏡像的摘要。顯示DIGEST
-f : 顯示滿足條件的鏡像
--no-trunc: 顯示IMAGE ID
-q: 只顯示鏡像ID
docker rmi : 刪除本地一個或多個鏡像。 #格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
-f :強制刪除;
--no-prune :不移除該鏡像的過程鏡像,默認移除;
docker tag : 標記本地鏡像,將其歸入某一倉庫。
格式:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
commit --通過容器創建本地鏡像 生成鏡像的命名:docker commit centos_v1 centos:v1
#docker push victor/centos:v1,其中ivictor是用戶名;v1是tag,可不寫,默認是latest
因為它push到docker hub中時,推送到相應用戶下,必須指定用戶名。
將鏡像ubuntu:15.10標記為 runoob/ubuntu:v3 鏡像。
docker tag ubuntu:15.10 runoob/ubuntu:v3
root@runoob:~# docker images runoob/ubuntu:v3 REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
虛懸鏡像:
鏡像列表中,有一個特殊的鏡像,這個鏡像沒有倉庫名,沒有標簽,均為 <none> :
<none> <none> 00285df0df87 5 days ago 342 MB
官方發布了新版本后,新舊鏡像同名,從而出現倉庫名、標簽均為 <none> 的鏡像。docker build 也會導致這種現象。
顯示這類鏡像:
docker images -f dangling=true
虛懸鏡像沒有用處,可以刪除:$ docker rmi $(docker images -q -f dangling=true)
中間層鏡像
$ docker images -a #顯示包括中間層鏡像和頂級鏡像。
這樣會看到很多無標簽的鏡像,與虛懸鏡像不同,這些鏡像都是其它鏡像所依賴的鏡像。這些無標簽鏡像不應該刪除,否則會導致上層鏡像因為依賴丟失而出錯。實際上,這些鏡像也沒必要刪除,因為相同的層只會存一遍,而這些鏡像是別的鏡像的依賴,因此並不會因為它們被列出來而多存了一份。只要刪除那些依賴它們的鏡像后,這些依賴的中間層鏡像也會被連帶刪除。
制作鏡像:
sudo docker commit -m='A new image' --author='Aomine' 614122c0aabb aoct/apache2
用-m
指定行創建的鏡像的提交信息。--author
指定鏡像作者,接着是容器ID、目標鏡像倉庫、鏡像名。
2、保存鏡像
我們的鏡像做好之后,我們要保存起來,以供備份使用,該怎么做?使用docker save命令,保存鏡像到本地。
[root@rocketmq-nameserver4 dev]# docker save -o rocketmq.tar rocketmq ##-o:指定保存的鏡像的名字;rocketmq.tar:保存到本地的鏡像名稱;rocketmq:鏡像名字,通過"docker images"查看 [root@rocketmq-nameserver4 dev]# ll
rocketmq.tar為剛保存的鏡像
3、載入鏡像
我們有了本地的鏡像文件,在需要的時候可以使用docker load將本地保存的鏡像再次導入docker中。
docker load --input rocketmq.tar 或 docker load < rocketmq.tar
4、刪除鏡像
有些鏡像過時了,我們需要刪除。使用如下的命令:docker rmi -f image_id ##-f:表示強制刪除鏡像;image_id:鏡像id