Docker學習筆記(三)——容器提交&上傳映象
一、簡要
之前的文章已經講過映象的下載、執行,和容器的基本操作,接下來這篇文章是講容器的提交和上傳映象。
打個比方:如果你想要你的容器進行備份或者分享給其他使用者使用(伺服器、其他使用者等),那就得將當前容器複製一份然後發給其他使用者;又或者說,你當前容器在本機部署了應用系統執行,然後測試沒問題了,想將該容器的釋出到伺服器裡執行,可以節省伺服器和本機環境配置不相同的時間,那麼這個過程在Docker裡如何體現的呢?下面有4個步驟:
1.我們可以在本機將執行後的容器提交(commit)到本地映象倉庫;
2.然後將本地映象上傳(push)到DockerHub;
3.伺服器/其他使用者機器,在DockerHub上下載映象(pull)
4.伺服器/其他使用者機器,將下載後的映象執行;
一、註冊&登入DockerHub使用者
1.註冊
點選上面官網地址,自行註冊。
2.登入
在作業系統輸入命令:docker login
[root@hejl nginx]# 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: hejianliang Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded You have new mail in /var/spool/mail/root
按照步驟輸入使用者名稱和密碼。
二、建立DockerHub映象地址
在官網登入DockerHub後,來到個人首頁:
點選"Create Repository"
輸入相應資訊,點選"Create"即可。
以下是我已經建立好的映象倉庫:
Tags and Scans:表示倉庫的標籤/版本;
Docker commands:表示倉庫的上傳(push)命令;
三、實操-容器提交&上傳映象
列出本地映象列表(如果沒有映象,自行pull映象):
[root@hejl nginx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hejianliang/centos java_nginx 7d33387c23ca 17 hours ago 765MB hejianliang/centos <none> f7dbccc37e60 9 days ago 686MB hejianliang/centos v1 4173d0975bbe 2 weeks ago 774MB centos latest 0d120b6ccaa8 3 months ago 215MB
列出本地容器列表(如沒有容器,自行run映象):
[root@hejl nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26dc75058b6e hejianliang/centos:java_nginx "/sbin/init" 17 hours ago Exited (137) 4 minutes ago centos_java_nginx a8bde2ae13aa hejianliang/centos:v1 "/bin/bash" 6 days ago Exited (0) 6 days ago 172.18.0.3
接下來我要將容器 id為 "26dc75058b6e" 的容器,提交到映象倉庫,提交語法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS說明: -a :提交的映象作者; -c :使用Dockerfile指令來建立映象; -m :提交時的說明文字; -p :在commit時,將容器暫停。
提交命令:
[root@hejl nginx]# docker commit -a "hejianliang" -m "整合Nginx、Tomcat、Keepalived服務" -p 26dc75058b6e hejianliang/centos:java_nginx_v2 sha256:9549e4d937c82ab46193b3faabd3bf3f4cb6a46acd54f52199b8d2c0edc66842
提交成功,docker images 檢視本地映象倉庫:
[root@hejl nginx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hejianliang/centos java_nginx_v2 9549e4d937c8 About a minute ago 801MB hejianliang/centos java_nginx 7d33387c23ca 18 hours ago 765MB hejianliang/centos <none> f7dbccc37e60 9 days ago 686MB hejianliang/centos v1 4173d0975bbe 2 weeks ago 774MB centos latest 0d120b6ccaa8 3 months ago 215MB
映象"hejianliang/centos:java_nginx_v2" 已提交成功了,容量大小是801MB,現在我們進行第二步上傳映象,上傳語法:
docker push [OPTIONS] NAME[:TAG]
OPTIONS說明: --disable-content-trust :忽略映象的校驗,預設開啟
上傳映象命令:
[root@hejl nginx]# docker push hejianliang/centos:java_nginx_v2 The push refers to repository [docker.io/hejianliang/centos] 3434a2f802c2: Pushed 076ecd3c326f: Layer already exists 291f6e44771a: Layer already exists java_nginx_v2: digest: sha256:2f846fabd91e5b78023ead48b7bd3642ba2cdad8446d97f88ce02b0d3908b51d size: 954
上傳映象成功。
四、實操-映象下載
剛才已經把映象上傳到官網上了,現在我們可以切換到另外一臺機器/本機(注:機器上需安裝Docker並啟動),將上傳的映象下載到機器上。
我們可以從docker上查詢剛才上傳的映象,命令:docker search hejianliang
[root@localhost ~]# docker search hejianliang NAME DESCRIPTION STARS OFFICIAL AUTOMATED hejianliang/centos centos倉庫 1 hejianliang/ubuntu 0
倉庫地址已搜尋出來,接下來下載映象:
[root@localhost ~]# docker pull hejianliang/centos:java_nginx_v2 java_nginx_v2: Pulling from hejianliang/centos 3c72a8ed6814: Pull complete 0f414fdba906: Pull complete a8a9d4720f65: Pull complete Digest: sha256:2f846fabd91e5b78023ead48b7bd3642ba2cdad8446d97f88ce02b0d3908b51d Status: Downloaded newer image for hejianliang/centos:java_nginx_v2 docker.io/hejianliang/centos:java_nginx_v2 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hejianliang/centos java_nginx_v2 9549e4d937c8 About an hour ago 801MB test/ubuntu v1 ed488aac8ae1 3 weeks ago 72.9MB <none> <none> 9076a9ac1911 3 weeks ago 0B <none> <none> 5a5fa4f0a2f9 3 weeks ago 0B <none> <none> 03be7b389780 3 weeks ago 0B <none> <none> b74f768c6588 3 weeks ago 72.9MB rethinkdb latest fc02d4327225 4 weeks ago 131MB hejianliang/ubuntu 15.10 9140108b62dc 6 weeks ago 72.9MB ubuntu latest 9140108b62dc 6 weeks ago 72.9MB hello-world latest bf756fb1ae65 10 months ago 13.3kB ubuntu 15.10 9b9cb95443b5 4 years ago 137MB training/webapp latest 6fae60ef3446 5 years ago 349MB
映象下載後,我們通過檢視映象命令,我們的 "hejianliang/centos" 映象也在本地倉庫裡了。
下載過後的映象,和平時一樣執行,這裡就不一一操作了,可以回顧作者之前的文章。
五、總結
個人認為Docker這種容器管理方式很便捷,就類似GitHub、MavenRepository等,使用起來很易上手,就是要記的命令多些;以往我沒使用Docker之前,是用虛擬機器進行系統部署測試,沒問題再將系統部署上雲伺服器。但體驗過兩種方式過後(Docker和虛擬機器),感覺Docker的效率更高,而且作業系統的環境也不用擔心不一致的問題,還有虛擬機器佔用的空間及記憶體比較多,處理效率也沒Docker高。這就是我使用這兩種虛擬容器的感受。