[Docker]自行架設私有的Docker Registry

[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的名稱)