[Docker]自行架設私有的Docker Registry
前言
雖然Docker Hub很方便,但私有企業大部份都會自己架設私有的Hub,此篇就是來記錄實做自行架設的docker hub,在此實做的是在cent os的部份
server部份
首先讓我們先來安裝一下docker registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
//port可以自行指定,例如下
docker run -d -p 5050:5000 --restart=always --name registry registry:2
假設我們已經有安裝了任何image在伺服器上,我們可以下指令查詢
docker Images
如果遇到權限不足,可以下
sudo docker images
照筆者在使用得到的結論,我們想要放到自己私有的hub上,命名的格式需為ip/name,舉個例子可能如20.10.10.10/vue這樣的格式,如果我想把現有的image放到hub上供其它機器可以下載,可以用重新命名的方式
docker tag mgt 20.10.10.10:5000/mgt
或者是直接在建造為image的時候,就先命名好格式如下範例
docker build -t 20.10.10.10:5000/mgt -f Dockerfile .
接著我們就可以用命名好的格式去做push到registy的動作
docker push 20.10.10.10:5000/mgt
然後我們應該會看到如下的錯誤資訊
The push refers to a repository [20.10.10.10:5000/haproxy]
Get http://20.10.10.10:5000/v1/_ping: http: server gave HTTP response to HTTPS client
此時我們先把這個網址寫進daemon.json的檔案裡面,可以打上如下指令
vi /etc/docker/daemon.json
然後改成如下的內容
{
"live-restore": true,
"group": "dockerroot",
"insecure-registries": ["10.20.20.20:5000"]
}
接著重啟docker
systemctl restart docker
client部份
如果說我們要在別台機器去pull自己的images時,也一樣得編輯daemon.json
vi /etc/docker/daemon.json
內容改成如下
{
"live-restore": true,
"group": "dockerroot",
"insecure-registries": ["10.20.20.20:5000"]
}
重啟docker
systemctl restart docker
最後就可以下指令去pull了
docker pull 20.10.10.10:5000/mgt
安裝web來方便查看有多少image
簡單一行指令就完成了
docker run -it -p 8080:8080 -d --name registry-web --link registry -e REGISTRY_URL=http://registry:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
(對應registry的名稱)