建立私有的 Registry
官方 registry image
比較流行的 UI
ui參考網址
Registry API 文件
執行私有的 Registry
1 2
| docker pull registry:2 docker container run -d -p 5000:5000 --name registry registry:2
|
測試私有 Registry 的 repository 目前有什麼 image 在上面
1 2
| http://10.1.25.123:5000/v2/_catalog http://10.1.25.124:5000/v2/_catalog
|
執行私有的 Registry UI
1 2
| docker pull joxit/docker-registry-ui docker container run -d -p 5050:80 --name docker-registry-ui joxit/docker-registry-ui
|
開啟 UI 後在右上角加入 registry 的 url http://10.1.25.123:5000 or http://localhost:5000/ , 之後會炸 CORS
解法因為 registry 需要開啟設定 , 所以需要建立 config.yml
注意萬一是用 powershell
則是使用 ${PWD}
1
| docker run -d -p 5000:5000 -v $(pwd)/registry/config.yml:/etc/docker/registry/config.yml --name registry registry:2
|
加入 yml 在自己 user 目錄底下的 Registry 資料夾內
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| version: 0.1 log: fields: service: registry storage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] Access-Control-Allow-Origin: ['*'] Access-Control-Allow-Methods: ['*'] Access-Control-Allow-Headers: ['Authorization', 'Accept'] Access-Control-Max-Age: [1728000] Access-Control-Allow-Credentials: [true] Access-Control-Expose-Headers: ['Docker-Content-Digest']
|
ubuntu 撈 docker container ip
1
| docker container inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress }}' 7b2
|
遠端拉 debian 建立標籤最後推上自己的 registry
1 2 3 4
| docker pull debian docker tag debian debian:test docker tag debian:test localhost:5000/debian:test docker push localhost:5000/debian:test
|
承上 , 萬一是推到正式的 ip 會炸出這個 error http: server gave HTTP response to HTTPS client
1 2 3
| docker pull debian docker tag debian 10.1.25.123:5000/debian:mywheezy1 docker push 10.1.25.123:5000/debian:mywheezy1
|
解法
特別注意這個地方兩台主機都需要設定 client server , 不然 pull or push 一定炸
1 2 3 4 5 6
| cd /etc/docker/ touch daemon.json sudo service docker restart #docker container run registry docker run -d -p 5000:5000 -v $(pwd)/registry/config.yml:/etc/docker/registry/config.yml --name registry registry:2 docker push 10.1.25.123:5000/debian:mywheezy1
|
daemon.json
1 2 3 4 5 6
| { "insecure-registries" : [ "10.1.25.123:5000" , "10.1.25.124:5000" ] }
|
整個成功以後可以用 powershell 登入 ssh
登入到 124 接著拉下 123 的 debian image
1 2
| ssh weberchang@10.1.25.124 docker pull 10.1.25.123:5000/debian:mywheezy1
|
其他 api 操作
1 2 3 4 5 6 7 8
| #列出 tag list curl http://localhost:5000/v2/xxxapi-image/tags/list
#xxxapi-image curl http://localhost:5000/v2/xxxapi-image/manifests/latest
#刪除 image Invoke-RestMethod -Method Delete -Uri "http://localhost:5000/v2/xxxapi-image/manifests/sha256:7f20c39a5575e862b6d2a81e627fe5e385a090845ae9096f3a7d8c299199dd6d"
|