Docker實踐(七):Docker Hub(映象分發、自動化構建)
一、Docker Hub簡介
Docker Hub的網址是
https://hub.docker.com
,提供的是映象託管服務,它與GitHub類似,利用Docker Hub,我們可以搜尋、建立、分享和管理映象,還可以利用其提供的自動化構建技術直接在叢集雲伺服器上構建映象。Docker Hub為使用者提供不限數目的公開映象託管服務,但僅提供一個私有映象託管服務。
Docker Hub上的映象分為兩類。一類是官方映象,比如ubuntu、redis等,此類映象一般由權威的第三方進行開發維護,最後還需要Docker官方認證通過。另一類為普通使用者映象。
二、映象的分發(Docker Hub、阿里雲)
1、Docker Hub分發
這裡預設你已經有了DockerHub賬號,沒有的話,就自行建立一個。
註冊成功之後,在命令列客戶端登入我們剛才註冊的賬號;並且登入資訊都儲存在~/.docker/config.json
中(有的是~/.dockercfg
),我這裡DockerHub和阿里雲的登入資訊。
使用push
命令上傳映象。如果不指定映象TAG,指定的倉庫在本地的所有映象都會上傳到Docker Hub。push之前,我的docker hub test倉庫下只有TAG=V1的映象。
docker push gutianlangyu/test:build_dockerfile_test_github
成功後,重新整理Docker Hub的test倉庫,會發現倉庫下已經多了TAG=build_dockerfile_test_github的映象。
2、阿里雲分發
首先登陸阿里雲映象倉庫,使用docker tag重新命名映象,並將它通過私網ip推送至registry,我這裡只貼出我本地操作的流程,阿里雲在映象倉庫-管理中給出了操作指南(下面會列出)。
操作指南(阿里雲)
登入阿里雲docker registry:
$ sudo docker login
登入registry的使用者名稱是您的阿里雲賬號全名,密碼是您開通namespace時設定的密碼。 你可以在映象管理首頁點選右上角按鈕修改docker login密碼。
從registry中拉取映象:
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[映象版本號]
將映象推送到registry:
$ sudo docker login --username=gubaijing2004@163.com registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[映象版本號]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[映象版本號]
其中[ImageId],[映象版本號]請你根據自己的映象資訊進行填寫。
sample:使用docker tag重新命名映象,並將它通過私網ip推送至registry:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
通過docker images 找到您的imageId 並對於改imageId重新命名映象domain到registry內網地址。
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/acs/agent
從內網push映象,速度將大大提升,並且將不會損耗您的公網流量。注意,如果您申請的機器是在vpc網路的,請使用registry-cn-hangzhou-vpc.aliyuncs.com的域名字首進行推送。
三、自動化構建
除了在本地建立映象然後使用push命令將其推送到Docker Hub之外,我們還可以使用Docker Hub提供的自動化構建技術在服務端直接構建映象。通過在Docker Hub連線一個包含Dockerfile檔案的Git Hub或Bit Bucket的倉庫, Docker Hub的構建叢集伺服器就會自動構建映象。通過這種方式構建出來的映象會被標記為Automated Build,也可以稱為受信構建(Trusted Build)。
使用自動化構建有以下幾個有點:
使用者可以確保他拉取的映象是使用特定方式構建出來的。
訪問你的Docker Hub的使用者能夠自由查閱Dockerfile檔案。
因為構建的過程是自動的,所以能確保倉庫裡的映象都是最新的。
下面我們使用GitHub來自動構建映象:
登入DockerHub,選擇右上角的Create
,下拉框中選擇Create Automated Build
。
選擇用來構建的源,這裡我們選擇GitHub:
如果首次操作,會需要GitHub登入、授權,我這邊之前操作過了,就會直接顯示我的GitHub專案列表:
點選選擇我們的docker
專案,這時會讓填一些名稱空間、倉庫,選擇私有還是公開、描述等資訊,最後點選Create
即可建立成功。
這時,在控制面板(Dashboard)中就能看到一個標有automated build
的倉庫docker
:
點選進入gutianlangyu/docker
:
只要你的Git Hub上的
Dockerfile
檔案有了最新更新,這邊就會自動構建最新映象。
Repo Info
:一些倉庫的基本資訊。Tags
:此倉庫構建出的映象TAGS列表。Dockerfile
:對應Git Hub上的Dockerfile檔案的內容。Build Details
:顯示構建進度資訊。Build Settings
:一些自動構建的配置選項:Build Setting
:對所自動構建的分支、tags等進行觸發配置。Repository Links
:可以配置進行關聯觸發自動構建,一般用在本映象會被作為其它映象的根映象。Build Triggers
:開啟後,可以通過URL手動請求構建。
Collaborators
:可以新增使用者參與映象的維護。Webhooks
:可以指定自動構建的回撥地址,從而與本系統關聯。
-Settings
:對此倉庫的一些基本操作:設為公開、私有、刪除。