一、注冊Docker Hub賬號
打開Docker Hub網(wǎng)站烙丛,找到注冊選項舅巷,按照常規(guī)注冊流程進行注冊即可。需要注意的是河咽,有時候可能需要進行人機識別驗證钠右,這需要調(diào)用Google的驗證服務(wù)。眾所周知Google在國內(nèi)的情況忘蟹,需要自己想辦法搞定飒房。如果人機驗證這一步過不去,那么Docker Hub的賬號是無法注冊成功的媚值。
二狠毯、通過Dockerfile構(gòu)建鏡像
這一步在之前的文章中有所涉及,操作如下:
[root@ChatDevOps docker-test]# docker build -f /root/docker-test/Dockerfile -t chatdevops/myapp .
Sending build context to Docker daemon 157.4 MB
Step 1/7 : FROM python:2.7-slim
---> 46ba956c5967
Step 2/7 : WORKDIR /app
---> Using cache
---> 874ecbc1dfc0
Step 3/7 : ADD . /app
---> Using cache
---> fe2d0e196a64
Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
---> Running in caf394f66822
... ...
以上命令中褥芒,選項-f指定了Dockerfile的路徑嚼松,選項-t指定了新的鏡像的倉庫名稱及鏡像名稱,還可以指定鏡像的標簽喂很。命令末尾的點代表構(gòu)建新鏡像的當前目錄惜颇,也可以寫成完整路徑。
[root@ChatDevOps docker-test]# docker build -f /root/docker-test/Dockerfile -t chatdevops/myapp:1.01 /root/docker-test/
三少辣、登錄Docker Hub
我在Docker Hub注冊的賬號為chatdevops凌摄,現(xiàn)在使用該賬號進行登錄。完整命令如下:
[root@ChatDevOps docker-test]# 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 (chatdevops): chatdevops
Password:
Login Succeeded
四漓帅、給新構(gòu)建的本地鏡像打標簽
如果本地鏡像的倉庫名與你新注冊的Docker Hub賬號名稱不一致锨亏,就需要使用docker tag進行重新打標簽,具體命令格式為:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
因為我注冊的賬號與我本地倉庫的名稱都是chatdevops忙干,所以我在操作過程中省略了tag這一步器予。但是為了演示這個例子,我再次tag一下捐迫。
[root@ChatDevOps docker-test]# docker tag chatdevops/myapp:1.01 chatdevops/myapp:1.02
[root@ChatDevOps docker-test]# docker image ls chatdevops/myapp
REPOSITORY TAG IMAGE ID CREATED SIZE
chatdevops/myapp 1.01 c4bec2582bf3 47 minutes ago 309 MB
chatdevops/myapp 1.02 c4bec2582bf3 47 minutes ago 309 MB
chatdevops/myapp latest c4bec2582bf3 47 minutes ago 309 MB
五乾翔、將新構(gòu)建的本地鏡像推送到Docker Hub
通過docker push命令可以將一個或多個本地鏡像推送到Docker Hub。
[root@ChatDevOps docker-test]# docker push chatdevops/myapp
該命令將鏡像myapp的所有標簽全部推送到Docker Hub施戴。我們看一下效果:
我們可以在其他機器上直接創(chuàng)建容器反浓。例如:我們使用鏡像chatdevops/myapp:1.02在10.1.1.12這臺機器上創(chuàng)建一個名為test-app的容器。
[root@ChatDevOps ~]# docker run -i -t --name test-app chatdevops/myapp:1.02
Unable to find image 'chatdevops/myapp:1.02' locally
Trying to pull repository docker.io/chatdevops/myapp ...
1.02: Pulling from docker.io/chatdevops/myapp
4d0d76e05f3c: Pull complete
da828db4a2d5: Pull complete
dae8f1abda34: Pull complete
7f80c063ca4d: Pull complete
4ad5318a2b9b: Pull complete
95a59aa8e00b: Pull complete
776fee21eb8e: Pull complete
Digest: sha256:4de441303d87d392b36fc1218a1be18e3b2bf5b81c9e88eed8688c402f06a793
Status: Downloaded newer image for docker.io/chatdevops/myapp:1.02
[root@ChatDevOps ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09fe7a428ecc chatdevops/myapp:1.02 "python app.py" About a minute ago Up About a minute 80/tcp test-app
在運行這個容器的過程中赞哗,docker會從Docker Hub拉取鏡像chatdevops/myapp:1.02存放于本地雷则,再創(chuàng)建容器。當然也可以先將Docker Hub的鏡像拉取到本地再創(chuàng)建容器肪笋。
六月劈、總結(jié)
通過以上步驟度迂,我們將自己創(chuàng)建的容器上傳的Docker Hub的倉庫中,無論我們在哪里猜揪,只要網(wǎng)絡(luò)能順利與Docker Hub互聯(lián)惭墓,我們就可以隨時隨地運行我們自己構(gòu)建的鏡像創(chuàng)建的容器,非常方便而姐。此處我們使用的是公開的倉庫诅妹,還可以將我們的鏡像共享給其他需要的人呢,非常方便毅人。可以通過關(guān)鍵字搜索一下我剛剛創(chuàng)建的鏡像尖殃。