Docker Registry 使用

當我們不想把我們的 docker image 公開在 docker hub,又不想付錢買 private 的功能時,我們就可以利用 Docker Registry

也就是我們自己的私有 image 儲存庫。可以存放我們自己私有的 image。

Docker Registry 操作

啟動一個 registry:

$ docker run -d -p 5000:5000 --name registry sldennis/registry
  • -d: Detached mode: Run container in the background, print new container id
  • -p: 將 5000 port export 出來到 local 的 5000 (前面是 local,後面是 container)

測試:

$ docker pull ubuntu
$ docker tag ubuntu localhost:5000/myprivateubuntuimage

localhost 也可以改成 ip

push it:

$ docker push localhost:5000/myprivateubuntuimage

pull it:

$ docker pull localhost:5000/myprivateubuntuimage

攜帶 Docker Registry

docker registry 預設會將存放 image 的檔案 mount 到本機的某個地方

查看方式:

$ docker inspect registry -f '{{json .Mounts}}'

-f: format docker inspect 出來的格式

Step 1

如果我們想將整個 registry 帶走,不想一個一個 save 出來,我們可以在 run registry 時,先將 container 裡面的 /var/lib/registry mount 到 local 的 /tmp/registry

$ docker run -d -p 5000:5000 --name registry -v /tmp/registry:/var/lib/registry sldennis/registry

-v: 將 local 的某個檔案 volume 到 container 的某個檔案 (local:container)

Step 2

/tmp/registry 帶走,然後在需要用此 registry 的地方再把 registry run 起來,並執行 step 1 的指令(但需要將 -v 的參數換成新的 local 路徑)

Troubleshooting

Error: 錯誤訊息為 http: server gave HTTP response to HTTPS client 時

原因

因為 docker 希望我們利用 TLS 憑證方式保護我們的 registry,因此使用 http 需額外設定。

處理方式

mac/windows

到 insecure registries 設定後重新啟動。

linux

新增一個 daemon.json

$ vim /etc/docker/daemon.json
{ "insecure-registries":["localhost:5000"] } => 將這段 json 加入到 daemon.json

Deploy a plain HTTP registry

Reference

Docker

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *