- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- 如何通過(guò)容器提交鏡像DockerCommit及推送鏡像Dock
這篇文章給大家分享的是有關(guān)如何通過(guò)容器提交鏡像DockerCommit及推送鏡像DockerPush的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
在本地創(chuàng )建一個(gè)容器后,可以依據這個(gè)容器創(chuàng )建本地鏡像,并可把這個(gè)鏡像推送到Docker hub中,以便在網(wǎng)絡(luò )上下載使用。
查看鏡像 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 創(chuàng )建一個(gè)名為myubuntu的容器 [root@docker-test1 ~]# docker run -ti --name myubuntu -d docker.io/ubuntu [root@docker-test1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 651a8541a47d docker.io/ubuntu "/bin/bash" 37 seconds ago Up 36 seconds myubuntu docker commit :從容器創(chuàng )建一個(gè)新的鏡像。 # docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -a :提交的鏡像作者; -c :使用Dockerfile指令來(lái)創(chuàng )建鏡像; -m :提交時(shí)的說(shuō)明文字; -p :在commit時(shí),將容器暫停。 根據這個(gè)myubuntu容器提交鏡像 [root@docker-test1 ~]# docker commit -a "wangshibo" -m "this is test" 651a8541a47d myubuntu:v1 sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d 再次查看鏡像,發(fā)現鏡像myubuntu:v1已經(jīng)提交到本地了 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myubuntu v1 6ce4aedd12cd 59 seconds ago 84.1 MB docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 在mybuntu:v1鏡像推送到docker hub倉庫中去 # docker push [OPTIONS] NAME[:TAG] OPTIONS說(shuō)明: --disable-content-trust :忽略鏡像的校驗,默認開(kāi)啟 首先是登錄docker hub (用戶(hù)名:wangshibo 密碼:*******) [root@docker-test1 ~]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username (wangshibo): wangshibo Password: Login Succeeded [root@docker-test1 ~]# docker push wangshibo/myubuntu:v1 The push refers to a repository [docker.io/wangshibo/myubuntu] An image does not exist locally with the tag: docker.io/wangshibo/myubuntu 這里需要將ubuntu:v1鏡像改名,在名稱(chēng)前加上自己的docker hub的Docker ID,即wangshibo [root@docker-test1 ~]# docker tag 6ce4aedd12cd wangshibo/myubuntu:v1 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myubuntu v1 6ce4aedd12cd 6 minutes ago 84.1 MB wangshibo/myubuntu v1 6ce4aedd12cd 6 minutes ago 84.1 MB docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 再次進(jìn)行推送(注意:下面的v1的tag標簽可以不打,默認是latest)。推送操作時(shí)間稍微會(huì )有一點(diǎn)長(cháng),耐心等待~ [root@docker-test1 ~]# docker push wangshibo/myubuntu:v1 The push refers to a repository [docker.io/wangshibo/myubuntu] b5948ba9486d: Pushed 8d7ea83e3c62: Mounted from library/ubuntu 6a061ee02432: Mounted from library/ubuntu f73b2816c52a: Mounted from library/ubuntu 6267b420796f: Mounted from library/ubuntu a30b835850bf: Mounted from library/ubuntu v1: digest: sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d size: 1564 最后登錄自己的Docker Hub,即https://hub.docker.com/ 登錄后,在Repositories里面就可以看到自己在上面推送的鏡像wangshibo/myubuntu:v1了,這是個(gè)對外的鏡像,可以在網(wǎng)絡(luò )上下載。 在Docker hub上可以看到這個(gè)鏡像的下載命令(注意下載時(shí)跟上tag標簽,如果是latest的默認tag可以不跟) 也可以直接在Docker hub上刪除這個(gè)鏡像(Repositories-鏡像-Settings-delete) 比如在另一臺上下載這個(gè)鏡像 [root@kevin-test ~]# docker pull wangshibo/myubuntu Pulling repository wangshibo/myubuntu Repository not found 需要跟上tag標簽 [root@kevin-test ~]# docker pull wangshibo/myubuntu:v1 v1: Pulling from wangshibo/myubuntu 68e2a091ef24: Pull complete 8f9dd35f6299: Pull complete a81a6171600b: Pull complete a211a2bc7010: Pull complete 9e71a0b4f83a: Pull complete 0cf75bb335aa: Pull complete c393a882769e: Pull complete Digest: sha256:845fa3dcc9d0de1b9c701e1009918995da35a29012015f6c297a05edc489e018 Status: Downloaded newer image for wangshibo/myubuntu:v1 [root@kevin-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE wangshibo/myubuntu v1 c393a882769e 12 minutes ago 84.11 MB 在本機刪除這個(gè)鏡像 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myubuntu v1 6ce4aedd12cd 15 minutes ago 84.1 MB wangshibo/myubuntu v1 6ce4aedd12cd 15 minutes ago 84.1 MB docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 注意上面有兩個(gè)6ce4aedd12cd的鏡像ID,此時(shí)直接使用這個(gè)鏡像ID是刪除不掉的 [root@docker-test1 ~]# docker rmi 6ce4aedd12cd Error response from daemon: conflict: unable to delete 6ce4aedd12cd (must be forced) - image is referenced in multiple repositories 應該先刪除docker tag改名前的鏡像,使用鏡像名稱(chēng)刪除。(一般在docker tag鏡像改名后,最好刪除改名前的鏡像) [root@docker-test1 ~]# docker rmi myubuntu:v1 Untagged: myubuntu:v1 Untagged: wangshibo/myubuntu@sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wangshibo/myubuntu v1 6ce4aedd12cd 15 minutes ago 84.1 MB docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB 這個(gè)時(shí)候就可以刪除鏡像ID刪除了 [root@docker-test1 ~]# docker rmi 6ce4aedd12cd Untagged: wangshibo/myubuntu:v1 Deleted: sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d Deleted: sha256:0ddeb6a16badd042914c2e72b9ef0331550c1cdcc4bdc6650a90cd9f57f1501b [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB
刪除鏡像失敗一例分享
[root@docker-test1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@docker-test1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 打算刪除掉docker的nginx鏡像, 但是發(fā)現這個(gè)鏡像就是刪除不了,加了-f強制刪除也不行,一直報Error: No such image的錯誤, 最后終于找到了辦法直接刪除文件! [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 62f816a209e6 7 days ago 109MB [root@docker-test1 ~]# docker rmi nginx Error: No such image: nginx [root@docker-test1 ~]# docker rmi 62f816a209e6 Error: No such image: 62f816a209e6 [root@docker-test1 ~]# docker rmi 62f816a209e6 -f Error: No such image: 62f816a209e6 如上,怎么都刪除不掉nginx鏡像!!!!! 處理辦法: [root@docker-test1 ~]# systemctl stop docker [root@docker-test1 ~]# rm -rf /var/lib/docker rm: cannot remove ‘/var/lib/docker/containers': Device or resource busy 刪除不了的原因是: 在建立容器的時(shí)候做了相應目錄的掛載,沒(méi)有卸載,所以Device or resource busy 解決辦法: 查找掛載的目錄并卸載 [root@docker-test1 ~]# cat /proc/mounts | grep "docker" /dev/mapper/centos-root /var/lib/docker/containers xfs rw,relatime,attr2,inode64,noquota 0 0 proc /run/docker/netns/default proc rw,nosuid,nodev,noexec,relatime 0 0 proc /run/docker/netns/a0626c54fd03 proc rw,nosuid,nodev,noexec,relatime 0 0 proc /run/docker/netns/b18072de4224 proc rw,nosuid,nodev,noexec,relatime 0 0 proc /run/docker/netns/b5298f643455 proc rw,nosuid,nodev,noexec,relatime 0 0 proc /run/docker/netns/9f5e97637c98 proc rw,nosuid,nodev,noexec,relatime 0 0 [root@docker-test1 ~]# umount /var/lib/docker/containers [root@docker-test1 ~]# rm -rf /var/lib/docker [root@docker-test1 ~]# systemctl start docker 再次查看就沒(méi)有這個(gè)鏡像了 [root@docker-test1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站