現在你已經學習了如何利用命令行在本地運行Docker,還學習了如何[拉取鏡像](https://github.com/widuu/chinese_docker/blob/master/userguide/usingdocker.md)用于從現成的鏡像中構建容器,并且還學習了如何[創建自己的鏡像](https://github.com/widuu/chinese_docker/blob/master/userguide/dockerimages.md)。
接下來,你將會學到如何利用[Docker Hub](https://hub.docker.com/)簡化和提高你的Docker工作流程。
[Docker Hub](https://hub.docker.com/)是一個由Docker公司負責維護的公共注冊中心,它包含了超過15,000個可用來下載和構建容器的鏡像,并且還提供認證、工作組結構、工作流工具(比如webhooks)、構建觸發器以及私有工具(比如私有倉庫可用于存儲你并不想公開分享的鏡像)。
## Docker命令和Docker Hub
Docker通過`docer search`、`pull`、`login`和`push`等命令提供了連接Docker Hub服務的功能,本頁將展示這些命令如何工作的。
## 賬號注冊和登陸
一般,你需要先在docker中心創建一個賬戶(如果您尚未有)。你可以直接在[Docker Hub](https://hub.docker.com/)創建你的賬戶,或通過運行:
~~~
$ sudo docker login
~~~
這將提示您輸入用戶名,這個用戶名將成為你的公共存儲庫的命名空間名稱。如果你的名字可用,docker會提示您輸入一個密碼和你的郵箱,然后會自動登錄到Docker Hub,你現在可以提交和推送鏡像到Docker Hub的你的存儲庫。
> 注:你的身份驗證憑證將被存儲在你本地目錄的`.dockercfg`文件中。
### 搜索鏡像
你可以通過使用搜索接口或者通過使用命令行接口在Docker Hub中搜索,可對鏡像名稱、用戶名或者描述等進行搜索:
~~~
$ 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
...
~~~
這里你可以看到兩個搜索的示例結果:`centos`和`tianon/centos`。第二個結果是從名為`tianon/`的用戶倉儲庫搜索到的,而第一個結果`centos`沒有用戶空間這就意味著它是可信的頂級命名空間。`/`字符分割用戶鏡像和存儲庫的名稱。
當你發現你想要的鏡像時,便可以用`docker pull `來下載它。
~~~
$ sudo docker pull centos
Pulling repository centos
0b443ba03958: Download complete
539c0211cd76: Download complete
511136ea3c5a: Download complete
7064731afe90: Download complete
~~~
現在你有一個鏡像,基于它你可以運行容器。
## 向Docker Hub貢獻
任何人都可以從`Docker Hub`倉庫下載鏡像,但是如果你想要分享你的鏡像,你就必須先注冊,就像你在[第一部分的docker用戶指南](https://github.com/widuu/chinese_docker/blob/master/userguide/dockerhub.md)看到的一樣。
## 推送鏡像到Docker Hub
為了推送到倉庫的公共注冊庫中,你需要一個命名的鏡像或者將你的容器提到為一個命名的鏡像,正像[這里](https://github.com/widuu/chinese_docker/blob/master/userguide/docerimages.md)我們所看到的。
你可以將此倉庫推送到公共注冊庫中,并以鏡像名字或者標簽來對其進行標記。
~~~
$ sudo docker push yourname/newimage
~~~
鏡像上傳之后你的團隊或者社區的人都可以使用它。
## Docker Hub特征
讓我們再進一步看看Docker Hub的特色,[這里](http://docs.docker.com/docker-hub/)你可以看到更多的信息。
* 私有倉庫
* 組織和團隊
* 自動構建
* Webhooks
## 私有倉庫
有時候你不想公開或者分享你的鏡像,所以Docker Hub允許你有私有倉庫,你可以在[這里](https://registry.hub.docker.com/plans/)登錄設置它。
## 組織和機構
私人倉庫一個較有用的地方在于你可以將倉庫分享給你團隊或者你的組織。Docker Hub支持創建組織,這樣你可以和你的同事來管理你的私有倉庫,在[這里](https://registry.hub.docker.com/account/organizations/)你可以學到如何創建和管理一個組織。
## 自動構建
自動構建功能會自動從[Github](https://www.github.com/)和[BitBucket](http://bitbucket.com/)直接將鏡像構建或更新至Docker Hub,通過為Github或Bitbucket的倉庫添加一個提交的hook來實現,當你推送提交的時候就會觸發構建和更新。
設置一個自動化構建你需要:
* 1.創建一個[Docker Hub](https://hub.docker.com/)賬戶并且登陸
* 2.通過[Link Accounts](https://registry.hub.docker.com/account/accounts/)菜單連接你的GitHub或者BitBucket
* 3.[配置自動化構建](https://registry.hub.docker.com/builds/add/)
* 4.選擇一個包含`Dockerfile`的Github或BitBucket項目
* 5.選擇你想用于構建的分支(默認是`master`分支)
* 6.給自動構建創建一個名稱
* 7.指定一個Docker標簽來構建
* 8.指定`Dockerfile`的路徑,默認是`/`。
一旦配置好自動構建,在幾分鐘內就會自動觸發構建,你就會在[Docker Hub](https://hub.docker.com/)倉庫源看到你新的構建,并且它將會和你的Github或者BitBucket保持同步更新直到你解除自動構建。
如果你想看到你自動化構建的狀態,你可以去你的Docker Hub[自動化構建頁面](https://registry.hub.docker.com/builds/),它將會想你展示你構建的狀態和構建歷史。
一旦你創建了一個自動化構建,你可以禁用或刪除它。但是,你不能通過`docker push`推送一個自動化構建,而只能通過在Github或者BitBucket提交你的代碼來管理它。
你可以在一個倉庫中創建多個自動構建,配置它們只指定的`Dockerfile`或Git 分支。
## 構建觸發器
自動構建也可以通過Docker Hub的Url來觸發,這樣你就可以通過命令重構自動構建鏡像。
## Webhooks
webhooks屬于你的存儲庫的一部分,當一個鏡像更新或者推送到你的存儲庫時允許你觸發一個事件。當你的鏡像被推送的時候,webhook可以根據你指定的url和一個有效的Json來遞送。
- 關于Docker
- 鏡像簡介
- 安裝篇
- Mac OS X
- Ubuntu
- Red Hat Enterprise Linux
- CentOS
- Debain
- Gentoo
- Google Cloud Platform
- Rackspace Cloud
- Amazon EC2
- IBM Softlayer
- Arch Linux
- FrugalWare
- Fedora
- openSUSE
- CRUX Linux
- Microsoft Windows
- Binaries
- 用戶指南
- 使用Docker Hub
- 在Docker中運行應用
- 使用容器
- 使用docker鏡像
- 連接容器
- 管理容器數據
- 使用Docker Hub
- Docker Hub
- 賬戶
- 存儲庫
- 自動構建
- 官方案例
- Docker中運行MongoDB
- Docker中運行Redis服務
- Docker中運行PostgreSQL
- Docker中運行Riak服務
- Docker中運行SSH進程服務
- Docker中運行CouchDB服務
- Docker中運行Apt-Cacher-ng服務