Debian 9 Stretch
Sponsored Link

Docker : Docker-Registry を利用する
2017/08/03
 
Docker-Registry をインストールして、Docker イメージのプライベートレジストリサーバーを構築します。
当例では、通信に使用される証明書は自己署名の証明書を利用します。
[1]
Docker-Registry コンテナー起動ホスト上で、こちらを参考に SSL証明書を作成しておきます
なお、当例では、自己署名証明書はリンク先の通り、[/etc/ssl/private] 配下に作成しているとし、[Common Name] には [dlp.srv.world] を設定しているものとして進めます。
[2] 作成した証明書を配置し、Registry イメージ (v2) を Pull して起動します。
Registry v2 コンテナーでは、イメージは [/var/lib/regstry] 配下に保管されるため、 該当領域を永続化させるために、ホスト側の [/var/lib/docker/registry] をマウントして利用するよう設定します。
root@dlp:~#
mkdir -p /etc/docker/certs.d/dlp.srv.world:5000

root@dlp:~#
cp -p /etc/ssl/private/server.crt /etc/ssl/private/domain.crt

root@dlp:~#
cp -p /etc/ssl/private/server.key /etc/ssl/private/domain.key

root@dlp:~#
cp -p /etc/ssl/private/server.crt /etc/docker/certs.d/dlp.srv.world:5000/ca.crt
root@dlp:~#
docker pull registry:2

root@dlp:~#
mkdir /var/lib/docker/registry

root@dlp:~#
docker run -d -p 5000:5000 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-v /etc/ssl/private:/certs \
-v /var/lib/docker/registry:/var/lib/registry \
registry:2
root@dlp:~#
docker ps

CONTAINER ID IMAGE      COMMAND           CREATED        STATUS        PORTS                   NAMES
4769f313b190 registry:2 "/entrypoint..."  5 seconds ago  Up 5 seconds  0.0.0.0:5000->5000/tcp  mode..
[3] Docker ノードのローカルイメージをプライベートレジストリに保存するには以下のように実行します。
# Registry コンテナー上の Docker イメージ一覧

root@dlp:~#
curl -k https://localhost:5000/v2/_catalog

{"repositories":[]}
root@dlp:~#
docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
storage                 latest              e5f465d60931        2 hours ago         1.13MB
web_server              latest              d6df7acdc0e3        2 hours ago         296MB
srv.world/deb_apache2   latest              8efc6944bf8d        2 days ago          219MB
debian                  latest              a20fd0d59cf1        10 days ago         100MB
registry                2                   751f286bc25e        2 weeks ago         33.2MB
busybox                 latest              efe10ee6727f        2 weeks ago         1.13MB

# タグ付けをして push する

root@dlp:~#
docker tag debian dlp.srv.world:5000/debian_reg

root@dlp:~#
docker push dlp.srv.world:5000/debian_reg

The push refers to a repository [dlp.srv.world:5000/debian_reg]
cf4ecb492384: Pushed
latest: digest: sha256:40506065be119bfc51093a65bf0123147cd2af72c767168dafdcb2d131f72e4d size: 529
root@dlp:~#
docker images

REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
storage                         latest              e5f465d60931        2 hours ago         1.13MB
web_server                      latest              d6df7acdc0e3        2 hours ago         296MB
srv.world/deb_apache2           latest              8efc6944bf8d        2 days ago          219MB
dlp.srv.world:5000/debian_reg   latest              a20fd0d59cf1        10 days ago         100MB
debian                          latest              a20fd0d59cf1        10 days ago         100MB
registry                        2                   751f286bc25e        2 weeks ago         33.2MB
busybox                         latest              efe10ee6727f        2 weeks ago         1.13MB

root@dlp:~#
curl -k https://localhost:5000/v2/_catalog

{"repositories":["debian_reg"]}
[4] 任意の Docker ノードでプライベートリポジトリのイメージを取得するには以下のように実行します。
# Registry コンテナー稼働ホストから証明書を取得しておく

root@node01:~#
mkdir -p /etc/docker/certs.d/dlp.srv.world:5000

root@node01:~#
cd /etc/docker/certs.d/dlp.srv.world:5000

root@node01:/etc/docker/certs.d/dlp.srv.world:5000#
scp dlp.srv.world:"/etc/docker/certs.d/dlp.srv.world:5000/ca.crt" ./
root@node01:~#
docker pull dlp.srv.world:5000/debian_reg

Using default tag: latest
latest: Pulling from debian_reg
Digest: sha256:40506065be119bfc51093a65bf0123147cd2af72c767168dafdcb2d131f72e4d
Status: Downloaded newer image for dlp.srv.world:5000/debian_reg:latest
root@node01:~#
docker images

REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
dlp.srv.world:5000/debian_reg   latest              a20fd0d59cf1        10 days ago         100MB
debian                          latest              a20fd0d59cf1        10 days ago         100MB
関連コンテンツ