Docker:Private Registry for Windows Container Service

Docker - Private Registry-Windows Container Service

公司環境特別,在測試 docker 過程只能被限定在 Windows Server 2016 - Windows Container,測試過程碰而一個非常實務上的需求,在公司內部需要架設私有 registry 服務,以提供私有 docker windows images 的 pushpull 服務。

第一次失敗

第一次,找到 docker 官方的 labs 的文件:https://github.com/docker/labs/blob/master/windows/registry/part-1.md 有做出 registry.exe 了,但在「Dockerfile for the Registry Server」步驟一直卡關,一直無法往下進行,苦腦了幾日。

Andrew Wu 幫忙

後來來到 FB:Docker.Taipei 社團詢問,在 Andrew Wu 幫忙下,得到另一個同 Docker labs 作者的另一個實作:https://github.com/StefanScherer/dockerfiles-windows/tree/master/registry,也可以直接 pull 作者 build 好的版本:https://hub.docker.com/r/stefanscherer/registry-windows/,目前測試的結果,可以順利在 Windows Server 上架起 Registry for Windows 服務。

注意,開發者必需修改本機 docker client 的 daemon.json

{
    "insecure-registries": [ "192.168.254.133:5000" ]
  }
  
  • IP Address 請修改為 Server Address,並且關閉 docker 並重啟 docker。(我在 Windows 10 的使用 restart 指令不會重讀 daemon.json。)
  • 架設文件寫的很清楚,請自行參考。

pull to Private registry

要 pull 私有 Images 到私有 registry,簡單來說有二個步驟:

  1. docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
  2. docker pull Name[:TAG]

定義一個 tag 指向來源 Image,tag 名稱為:IP:Port/Name[:TAG],例如:172.21.5.213:5000/regstry;然後使用此 Tag Name 來進行 pull 的動作,例如:

docker tag kkbruce/windowsredis:3.2.100 192.168.254.133:5000/windowsredis:3.2.100
  docker push 192.168.254.133:5000/windowsredis:3.2.100
  

就能看到如下圖的效果:

docker pull private register for windows container

刪除 blob images

算是在測試過程碰到的小問題,registry 除了 pull(HTTP GET) 與 push(HTTP POST) 之外其他部分,必須自行透過 HTTP API 去進行其他的操作。

1 則留言:

  1. 請問CA憑證有詳細的產生及套用到DOCKER上的步驟嗎?
    感謝

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。