鍍金池/ 教程/ Linux/ 使用Docker Hub
docker用戶(hù)指南
鏡像
在Docker中運(yùn)行SSH進(jìn)程服務(wù)
Docker Hub
CentOS
Rackspace Cloud
Red Hat Enterprise Linux
在Docker中運(yùn)行Reids服務(wù)
FrugalWare
管理容器數(shù)據(jù)
Debian
Docker中運(yùn)行MongoDB
Gentoo
在Docker中使用Riak服務(wù)
IBM SoftLayer
在Docker中運(yùn)行Apt-Cacher-ng服務(wù)
開(kāi)始使用Docker Hub
Amazon EC2
在Docker中運(yùn)行"hello Word"應(yīng)用
Docker Hub上的倉(cāng)庫(kù)和鏡像
Ubuntu
Docker Hub賬戶(hù)
Docker中運(yùn)行Node.js web應(yīng)用
Docker中運(yùn)行CouchDB服務(wù)
Fedora
Binaries
CRUX Linux
使用Docker Hub
Mac OS X 安裝 Docker
在Docker中運(yùn)行PostgreSQL
創(chuàng)建一個(gè)基本鏡像
Docker Hub上的自動(dòng)化構(gòu)建
連接容器
Google Cloud Platform
使用docker第一步
使用docker鏡像
Arch Linux
openSUSE
使用容器
Microsoft Windows 安裝docker

使用Docker Hub

現(xiàn)在你已經(jīng)學(xué)習(xí)了如何利用命令行在本地運(yùn)行Docker,還學(xué)習(xí)了如何拉取鏡像用于從現(xiàn)成的鏡像中構(gòu)建容器,并且還學(xué)習(xí)了如何創(chuàng)建自己的鏡像。

接下來(lái),你將會(huì)學(xué)到如何利用Docker Hub簡(jiǎn)化和提高你的Docker工作流程。

Docker Hub是一個(gè)由Docker公司負(fù)責(zé)維護(hù)的公共注冊(cè)中心,它包含了超過(guò)15,000個(gè)可用來(lái)下載和構(gòu)建容器的鏡像,并且還提供認(rèn)證、工作組結(jié)構(gòu)、工作流工具(比如webhooks)、構(gòu)建觸發(fā)器以及私有工具(比如私有倉(cāng)庫(kù)可用于存儲(chǔ)你并不想公開(kāi)分享的鏡像)。

Docker命令和Docker Hub

Docker通過(guò)docer searchpull、loginpush等命令提供了連接Docker Hub服務(wù)的功能,本頁(yè)將展示這些命令如何工作的。

賬號(hào)注冊(cè)和登陸

一般,你需要先在docker中心創(chuàng)建一個(gè)賬戶(hù)(如果您尚未有)。你可以直接在Docker Hub創(chuàng)建你的賬戶(hù),或通過(guò)運(yùn)行:

    $ sudo docker login

這將提示您輸入用戶(hù)名,這個(gè)用戶(hù)名將成為你的公共存儲(chǔ)庫(kù)的命名空間名稱(chēng)。如果你的名字可用,docker會(huì)提示您輸入一個(gè)密碼和你的郵箱,然后會(huì)自動(dòng)登錄到Docker Hub,你現(xiàn)在可以提交和推送鏡像到Docker Hub的你的存儲(chǔ)庫(kù)。

注:你的身份驗(yàn)證憑證將被存儲(chǔ)在你本地目錄的.dockercfg文件中。

搜索鏡像

你可以通過(guò)使用搜索接口或者通過(guò)使用命令行接口在Docker Hub中搜索,可對(duì)鏡像名稱(chēng)、用戶(hù)名或者描述等進(jìn)行搜索:

    $ sudo docker search centos
    NAME           DESCRIPTION                                     STARS     OFFICIAL   TRUSTED
    centos         Official CentOS 6 Image as of 12 April 2014     88
    tianon/centos  CentOS 5 and 6, created using rinse instea...   21
    ...

這里你可以看到兩個(gè)搜索的示例結(jié)果:centostianon/centos。第二個(gè)結(jié)果是從名為tianon/的用戶(hù)倉(cāng)儲(chǔ)庫(kù)搜索到的,而第一個(gè)結(jié)果centos沒(méi)有用戶(hù)空間這就意味著它是可信的頂級(jí)命名空間。/字符分割用戶(hù)鏡像和存儲(chǔ)庫(kù)的名稱(chēng)。

當(dāng)你發(fā)現(xiàn)你想要的鏡像時(shí),便可以用docker pull <imagename>來(lái)下載它。

    $ sudo docker pull centos
    Pulling repository centos
    0b443ba03958: Download complete
    539c0211cd76: Download complete
    511136ea3c5a: Download complete
    7064731afe90: Download complete

現(xiàn)在你有一個(gè)鏡像,基于它你可以運(yùn)行容器。

向Docker Hub貢獻(xiàn)

任何人都可以從Docker Hub倉(cāng)庫(kù)下載鏡像,但是如果你想要分享你的鏡像,你就必須先注冊(cè),就像你在第一部分的docker用戶(hù)指南看到的一樣。

推送鏡像到Docker Hub

為了推送到倉(cāng)庫(kù)的公共注冊(cè)庫(kù)中,你需要一個(gè)命名的鏡像或者將你的容器提到為一個(gè)命名的鏡像,正像這里我們所看到的。

你可以將此倉(cāng)庫(kù)推送到公共注冊(cè)庫(kù)中,并以鏡像名字或者標(biāo)簽來(lái)對(duì)其進(jìn)行標(biāo)記。

    $ sudo docker push yourname/newimage

鏡像上傳之后你的團(tuán)隊(duì)或者社區(qū)的人都可以使用它。

Docker Hub特征

讓我們?cè)龠M(jìn)一步看看Docker Hub的特色,這里你可以看到更多的信息。

  • 私有倉(cāng)庫(kù)
  • 組織和團(tuán)隊(duì)
  • 自動(dòng)構(gòu)建
  • Webhooks

私有倉(cāng)庫(kù)

有時(shí)候你不想公開(kāi)或者分享你的鏡像,所以Docker Hub允許你有私有倉(cāng)庫(kù),你可以在這里登錄設(shè)置它。

組織和機(jī)構(gòu)

私人倉(cāng)庫(kù)一個(gè)較有用的地方在于你可以將倉(cāng)庫(kù)分享給你團(tuán)隊(duì)或者你的組織。Docker Hub支持創(chuàng)建組織,這樣你可以和你的同事來(lái)管理你的私有倉(cāng)庫(kù),在這里你可以學(xué)到如何創(chuàng)建和管理一個(gè)組織。

自動(dòng)構(gòu)建

自動(dòng)構(gòu)建功能會(huì)自動(dòng)從GithubBitBucket直接將鏡像構(gòu)建或更新至Docker Hub,通過(guò)為Github或Bitbucket的倉(cāng)庫(kù)添加一個(gè)提交的hook來(lái)實(shí)現(xiàn),當(dāng)你推送提交的時(shí)候就會(huì)觸發(fā)構(gòu)建和更新。

設(shè)置一個(gè)自動(dòng)化構(gòu)建你需要:

  • 1.創(chuàng)建一個(gè)Docker Hub賬戶(hù)并且登陸
  • 2.通過(guò)Link Accounts菜單連接你的GitHub或者BitBucket
  • 3.配置自動(dòng)化構(gòu)建
  • 4.選擇一個(gè)包含Dockerfile的Github或BitBucket項(xiàng)目
  • 5.選擇你想用于構(gòu)建的分支(默認(rèn)是master分支)
  • 6.給自動(dòng)構(gòu)建創(chuàng)建一個(gè)名稱(chēng)
  • 7.指定一個(gè)Docker標(biāo)簽來(lái)構(gòu)建
  • 8.指定Dockerfile的路徑,默認(rèn)是/

一旦配置好自動(dòng)構(gòu)建,在幾分鐘內(nèi)就會(huì)自動(dòng)觸發(fā)構(gòu)建,你就會(huì)在Docker Hub倉(cāng)庫(kù)源看到你新的構(gòu)建,并且它將會(huì)和你的Github或者BitBucket保持同步更新直到你解除自動(dòng)構(gòu)建。

如果你想看到你自動(dòng)化構(gòu)建的狀態(tài),你可以去你的 Docker Hub 自動(dòng)化構(gòu)建頁(yè)面,它將會(huì)想你展示你構(gòu)建的狀態(tài)和構(gòu)建歷史。

一旦你創(chuàng)建了一個(gè)自動(dòng)化構(gòu)建,你可以禁用或刪除它。但是,你不能通過(guò)docker push推送一個(gè)自動(dòng)化構(gòu)建,而只能通過(guò)在Github或者BitBucket提交你的代碼來(lái)管理它。

你可以在一個(gè)倉(cāng)庫(kù)中創(chuàng)建多個(gè)自動(dòng)構(gòu)建,配置它們只指定的Dockerfile或Git 分支。

構(gòu)建觸發(fā)器

自動(dòng)構(gòu)建也可以通過(guò)Docker Hub的Url來(lái)觸發(fā),這樣你就可以通過(guò)命令重構(gòu)自動(dòng)構(gòu)建鏡像。

Webhooks

webhooks屬于你的存儲(chǔ)庫(kù)的一部分,當(dāng)一個(gè)鏡像更新或者推送到你的存儲(chǔ)庫(kù)時(shí)允許你觸發(fā)一個(gè)事件。當(dāng)你的鏡像被推送的時(shí)候,webhook可以根據(jù)你指定的url和一個(gè)有效的Json來(lái)遞送。