Podman : Registry を利用する2019/11/19 |
Registry をインストールして、コンテナーイメージのプライベートレジストリサーバーを構築します。
|
|
[1] |
Registry コンテナー起動ホスト上で、こちらを参考に SSL 証明書を取得しておきます。
当例では、SSL 証明書はリンク先の例のように [/etc/letsencrypt/live/dlp.srv.world] 配下に取得しているとし、[Common Name] には [dlp.srv.world] を設定しているものとして進めます。 |
[2] | 作成した証明書を配置し、Registry イメージ (v2) を Pull して起動します。 Registry v2 コンテナーでは、イメージは [/var/lib/regstry] 配下に保管されるため、 該当領域を永続化させるために、ホスト側の [/var/lib/containers/registry] をマウントして利用するよう設定します。 なお、システムが SELinux=Enforcing の状態の場合、ホスト側の領域を外部ストレージとして利用するには、コンテナー起動時に [--privileged] オプションが必要です。 |
[root@dlp ~]#
[root@dlp ~]# mkdir -p /etc/containers/certs.d/dlp.srv.world:5000 [root@dlp ~]# cp -p /etc/letsencrypt/live/dlp.srv.world/cert.pem /etc/containers/certs.d/dlp.srv.world:5000/ca.crt
podman pull registry:2 [root@dlp ~]# mkdir /var/lib/containers/registry [root@dlp ~]# podman run --privileged -d -p 5000:5000 \
[root@dlp ~]# -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem \ -e REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem \ -v /etc/letsencrypt/live/dlp.srv.world:/certs \ -v /var/lib/containers/registry:/var/lib/registry \ registry:2 podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4ca421e1ddc6 docker.io/library/registry:2 /etc/docker/regis... 9 seconds ago Up 9 seconds ago 0.0.0.0:5000->5000/tcp naughty_mclaren |
[3] | Firewalld を有効にしている場合は、ホスト側のマッピングポートの許可が必要です。 |
[root@dlp ~]# firewall-cmd --add-port=5000/tcp --permanent success [root@dlp ~]# firewall-cmd --reload success |
[4] | ローカルイメージをプライベートレジストリに保存するには以下のように実行します。 |
# Registry コンテナー上のコンテナーイメージ一覧 [root@dlp ~]# curl https://dlp.srv.world:5000/v2/_catalog {"repositories":[]} podman images REPOSITORY TAG IMAGE ID CREATED SIZE srv.world/nginx_server latest 0311ace27400 18 minutes ago 991 MB srv.world/fedora_httpd latest bb6f86826d3f 25 minutes ago 622 MB docker.io/library/fedora latest f0858ad3febd 2 weeks ago 201 MB docker.io/library/registry 2 f32a97de94e1 8 months ago 26.4 MB # タグ付けをして push する [root@dlp ~]# podman tag srv.world/nginx_server dlp.srv.world:5000/nginx_server [root@dlp ~]# podman push dlp.srv.world:5000/nginx_server Getting image source signatures Copying blob 2ae3cee18c8e done Copying blob 87d1869c5532 done Copying blob 45624da6267b done Copying config 0311ace274 done Writing manifest to image destination Storing signatures[root@dlp ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE srv.world/nginx_server latest 0311ace27400 19 minutes ago 991 MB dlp.srv.world:5000/nginx_server latest 0311ace27400 19 minutes ago 991 MB srv.world/fedora_httpd latest bb6f86826d3f 26 minutes ago 622 MB docker.io/library/fedora latest f0858ad3febd 2 weeks ago 201 MB docker.io/library/registry 2 f32a97de94e1 8 months ago 26.4 MB[root@dlp ~]# curl https://dlp.srv.world:5000/v2/_catalog {"repositories":["nginx_server"]} |
[5] | 任意のノードから、プライベートリポジトリのイメージを取得するには以下のように実行します。 |
# Registry コンテナー稼働ホストから証明書を取得しておく [root@node01 ~]# mkdir -p /etc/containers/certs.d/dlp.srv.world:5000 [root@node01 ~]# cd /etc/containers/certs.d/dlp.srv.world:5000 [root@node01 dlp.srv.world:5000]# scp dlp.srv.world:"/etc/containers/certs.d/dlp.srv.world:5000/ca.crt" ./
podman pull dlp.srv.world:5000/nginx_server Trying to pull dlp.srv.world:5000/nginx_server... Getting image source signatures Copying blob 73f1c0b667c0 done Copying blob c7d0a09b8e0f done Copying blob 315e857f93fb done Copying config 0311ace274 done Writing manifest to image destination Storing signatures 0311ace27400d80a643591ce434d7fae0b9d8dea43cb1363540a5d6918e6020c[root@node01 ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/nginx_server latest 0311ace27400 26 minutes ago 991 MB |
Sponsored Link |