上一篇文章講了Docker Machine實現多主機Docker節點的管理。本文講解如何實現Docker Registry,其實這個在第一篇Docker入門一文中已經簡單介紹,本文僅是對一些細節作個說明。html
有時咱們的服務器沒法訪問互聯網,或者你不但願將本身的鏡像放到公網當中,那麼你就須要Docker Registry,它能夠用來存儲和管理本身的鏡像。docker
其實建立私有的Docker倉庫很是簡單,只須要運行一個Registry容器便可,該容器存儲在Docker HUB中。shell
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry
-d 是後臺啓動容器。json
-p 將容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服務端口。ubuntu
-v 將容器 /var/lib/registry目錄映射到宿主機的/myregistry,用於存放鏡像數據。安全
理論上咱們已經搭建好了本身的私有鏡像倉庫,但這時候還有一些問題須要咱們解決。服務器
這是因爲Registry爲了安全性考慮,默認是須要證書支持的,證書這塊我倒沒有研究過,能夠經過一個簡單的辦法解決。建立或者修改/etc/docker/daemon.json
文件,並在其中寫入curl
{ "insecure-registries": ["<ip>:5000"] }
其中
修改文以後執行如下命令重啓節點docker。rest
systemctl daemon-reload systemctl restart docker
我是在ubuntu16環境進行的上述操做,其餘系統能夠參考相應命令。
docker tag wsf <ip>:5000/wsf:v1
給wsf鏡像重命名爲
其實Docker HUB與咱們要創建的私有Registry沒有本質的區別。
docker run ubuntu
語句從官方hub中尋找鏡像,它是
docker run docker.io/library/ubuntu
的簡寫。
docker.io便是上面的ip地址,端口號爲80省略。
docker push <ip>:5000/wsf:v1
docker pull <ip>:5000/wsf:v1
上傳和下載鏡像均可以在任意能訪問Registry的節點上進行。前提是此節點必須進行上述的修改daemon.json操做。
curl http://<ip>:5000/v2/_catalog
此語句會返回一個json,包含當前Registry中存儲的鏡像信息。
本文簡單爲你們介紹了Docker Registry的相關細節,有了這個東西就能更好的實現docker的多主機管理和咱們自定義鏡像的管理。