前言
上一篇文章講了Docker Machine實現多主機Docker節點的管理。本文講解如何實現Docker Registry,其實這個在第一篇Docker入門一文中已經簡單介紹,本文僅是對一些細節做個說明。
Why Docker Registry?
有時我們的服務器無法訪問互聯網,或者你不希望將自己的鏡像放到公網當中,那么你就需要Docker Registry,它可以用來存儲和管理自己的鏡像。
How to install Docker Registry?
其實創建私有的Docker倉庫非常簡單,只需要運行一個Registry容器即可,該容器存儲在Docker HUB中。
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry
-d 是后台啟動容器。
-p 將容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服務端口。
-v 將容器 /var/lib/registry目錄映射到宿主機的/myregistry,用於存放鏡像數據。
How to use Docker Registry?
理論上我們已經搭建好了自己的私有鏡像倉庫,但這時候還有一些問題需要我們解決。
在pull或者push鏡像時報拒絕連接的錯誤。
這是由於Registry為了安全性考慮,默認是需要證書支持的,證書這塊我倒沒有研究過,可以通過一個簡單的辦法解決。創建或者修改/etc/docker/daemon.json
文件,並在其中寫入
{
"insecure-registries": ["<ip>:5000"]
}
其中
修改文之后執行以下命令重啟節點docker。
systemctl daemon-reload
systemctl restart docker
我是在ubuntu16環境進行的上述操作,其他系統可以參考相應命令。
通過 docker tag重命名鏡像,使之與registry匹配。
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操作。
查看Registry中所有鏡像信息
curl http://<ip>:5000/v2/_catalog
此語句會返回一個json,包含當前Registry中存儲的鏡像信息。
總結
本文簡單為大家介紹了Docker Registry的相關細節,有了這個東西就能更好的實現docker的多主機管理和我們自定義鏡像的管理。