雖然我們通常只要從 Docker hub pull 和 push 就可以管理映像檔。 但是面對客戶的環境要求,還是有很大的機會在基礎架構中使用私有的 registry 來管理我們的映像檔。

自架 registry 聽起來好像很難,但是只要會 Docker 就可以很輕鬆的搞定,因為 Docker 官方已經有一個現成的 registry 的映像檔

使用說明

輸入以下指令 docker run -d -p 5000:5000 --restart always --name myregistry registry:2 ,輸入完後會 registry 就會執行起來,如下圖。

run-registryrun-registry

指令說明

  • -d 背景執行
  • -p 對應 port 5000
  • --restart always 容器重啟政策的設定,請參考 Restart policies (--restart)
  • --name 命名容器為 myregistry
  • registry:2 映像檔名稱+版本

接下來要將要 push 的映像檔加上 localhost:5000 的 tag,這樣在 push 的時候 Docker 指令就知道要 push 到哪一個 registry。 我這邊以 alpine 映像檔為範例,輸入以下指令 docker tag alpine localhost:5000/myalpine 下 tag。

接著 push 該映像檔 docker push localhost:5000/myalpine,如下圖。

pushpush

接著輸入 API 的查詢指令 curl -X GET http://localhost:5000/v2/_catalog,可以檢查有沒有成功 push 上去,如下圖。

search_repositorysearch_repository

之後要抓取私有 registry 映像檔的時候只要加上 localhost:5000 就可以抓取了,如下方指令 docker pull localhost:5000/myalpine

小結

因為自架的 registry 也是容器,所以要注意當容器被移除後,裡面的映象檔也會跟著消失,這點要特別注意。

延伸閱讀

[Docker Official Images - registry]
[Docker Registry]
[How to search images from private 1.0 registry in docker?]