Software

使用官方 docker image 架設私有 Docker Registry

使用官方 docker image 架設私有 Docker Registry

1. 先進官方的 hub 確認 registry

#docker search registry

NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
registry                             The Docker Registry 2.0 implementation for s…   3496      [OK]
distribution/registry                WARNING: NOT the registry official image!!! …   57                   [OK]
stefanscherer/registry-windows       Containerized docker registry for Windows Se…   33
jc21/registry-ui                     A nice web interface for managing your Docke…   23
budry/registry-arm                   Docker registry build for Raspberry PI 2 and…   18
deis/registry                        Docker image registry for the Deis open sour…   12
anoxis/registry-cli                  You can list and delete tags from your priva…   11                   [OK]
allingeek/registry                   A specialization of registry:2 configured fo…   4                    [OK]
pallet/registry-swift                Add swift storage support to the official do…   4                    [OK]
以下略...

我們看到了官方有發布一個 The Docker Registry 2.0 的版本

2. 安裝並執行官方 registry

#docker run -d -p 5000:5000 -v /img/:/var/lib/registry --restart=always --name registry registry

啟用 SSL 憑證方式
#docker run -d \
--restart=always \
--name registry \
-v /img/:/var/lib/registry \
-v /ssl/xxx.cer:/ssl/xxx.cer \
-v /ssl/private.key:/ssl/private.key \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/ssl/xxx.cer \
-e REGISTRY_HTTP_TLS_KEY=/ssl/private.key \
-p 443:443 \
registry

在這邊說明一下各項參數

run: 執行該 image
-d : 背景執行狀態,如果要看 log 必須使用 docker logs 才會顯示
-p : 使用的 port ,前面的 5000 是外部的,而後面的 5000 則是 image 使用的
-v : 掛載 volume 這邊則是使用對應到外部資料夾,也可以是先建立然後掛載,跟 port 一樣前面是對外後面則是對應到 image內部
--restart=always : 當 Docker 發生重啟時則跟著啟動
--name 設定 container 的名稱
最後面則是拉取官方 image 的名稱

3. 確認安裝成功

#docker ps

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                    NAMES
3ff4072234b2   registry   "/entrypoint.sh /etc…"   25 minutes ago   Up 25 minutes   0.0.0.0:5000->5000/tcp   registry

網頁確認 log
http://127.0.0.1:5000/v2/_catalog
如果沒有推送上去會是顯示這樣子

{
repositories: [ ]
}

如果有成功推送上去則是

{
repositories: [
"test"
]
}