1. 程式人生 > >Docker初體驗,向Docker Hub推送第一個本地映象

Docker初體驗,向Docker Hub推送第一個本地映象

一、註冊Docker Hub賬號

開啟Docker Hub網站,找到註冊選項,按照常規註冊流程進行註冊即可。需要注意的是,有時候可能需要進行人機識別驗證,這需要呼叫Google的驗證服務。眾所周知Google在國內的情況,需要自己想辦法搞定。如果人機驗證這一步過不去,那麼Docker Hub的賬號是無法註冊成功的。

二、通過Dockerfile構建映象

這一步在之前的文章中有所涉及,操作如下:

[[email protected] 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指定了新的映象的倉庫名稱及映象名稱,還可以指定映象的標籤。命令末尾的點代表構建新映象的當前目錄,也可以寫成完整路徑。

[root@ChatDevOps docker-test]# docker build -f /root/docker-test/Dockerfile -t chatdevops/myapp:1.01 /root/docker-test/

三、登入Docker Hub

我在Docker Hub註冊的賬號為chatdevops,現在使用該賬號進行登入。完整命令如下:

[
[email protected]
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

四、給新構建的本地映象打標籤

如果本地映象的倉庫名與你新註冊的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

五、將新構建的本地映象推送到Docker Hub

通過docker push命令可以將一個或多個本地映象推送到Docker Hub。

[root@ChatDevOps docker-test]# docker push chatdevops/myapp

該命令將映象myapp的所有標籤全部推送到Docker Hub。我們看一下效果:
image
我們可以在其他機器上直接建立容器。例如:我們使用映象chatdevops/myapp:1.02在10.1.1.12這臺機器上建立一個名為test-app的容器。

[[email protected] ~]# 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
[[email protected] ~]# 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存放於本地,再建立容器。當然也可以先將Docker Hub的映象拉取到本地再建立容器。

六、總結

通過以上步驟,我們將自己建立的容器上傳的Docker Hub的倉庫中,無論我們在哪裡,只要網路能順利與Docker Hub互聯,我們就可以隨時隨地執行我們自己構建的映象建立的容器,非常方便。此處我們使用的是公開的倉庫,還可以將我們的映象共享給其他需要的人呢,非常方便。可以通過關鍵字搜尋一下我剛剛建立的映象。