openSUSE Leap 16

Podman : Registry を利用する2025/10/31

 

Registry をインストールして、コンテナーイメージのプライベートレジストリーサーバーを構築します。

[1] Registry をインストールします。
dlp:~ #
zypper -n install distribution-registry
dlp:~ #
systemctl enable --now registry
# Firewalld 稼働中の場合はサービスポート許可

dlp:~ #
firewall-cmd --add-port=5000/tcp

dlp:~ #
firewall-cmd --runtime-to-permanent
[2] Registry の設定です。
HTTP 通信 且つ 認証なしの場合の設定です。
dlp:~ #
podman images

REPOSITORY                           TAG         IMAGE ID      CREATED         SIZE
srv.world/suse-nginx                 latest      2f5e96e113e4  18 minutes ago  439 MB
srv.world/suse-httpd                 latest      155ffb9ef27d  29 minutes ago  393 MB
registry.opensuse.org/opensuse/leap  latest      004d9956dc10  2 weeks ago     118 MB

# ローカルホストから [push]

dlp:~ #
podman tag opensuse/leap dlp.srv.world:5000/opensuse:my-registry

dlp:~ #
podman push dlp.srv.world:5000/opensuse:my-registry --tls-verify=false

dlp:~ #
podman images

REPOSITORY                           TAG          IMAGE ID      CREATED         SIZE
srv.world/suse-nginx                 latest       2f5e96e113e4  27 minutes ago  439 MB
srv.world/suse-httpd                 latest       155ffb9ef27d  38 minutes ago  393 MB
dlp.srv.world:5000/opensuse          my-registry  004d9956dc10  2 weeks ago     118 MB
registry.opensuse.org/opensuse/leap  latest       004d9956dc10  2 weeks ago     118 MB

# 他ノードから [pull]

node01:~ #
podman pull dlp.srv.world:5000/opensuse:my-registry --tls-verify=false

node01:~ #
podman images

REPOSITORY                        TAG          IMAGE ID      CREATED        SIZE
dlp.srv.world:5000/opensuse       my-registry  004d9956dc10  2 weeks ago    118 MB
[3] Basic 認証を有効にする場合は以下のように設定します。
dlp:~ #
zypper -n install apache2-utils
dlp:~ #
vi /etc/registry/config.yml
# 最終行に [auth] セクションを追記

auth:
  htpasswd:
    realm: basic-realm
    path: /etc/containers/registries.conf.d/.htpasswd

# 任意のユーザー登録
# [-c] オプションは新規ファイル作成のため初回のみ付与

dlp:~ #
htpasswd -Bc /etc/containers/registries.conf.d/.htpasswd suse

New password:
Re-type new password:
Adding password for user suse

dlp:~ #
systemctl restart registry
# 任意のノードでアクセス確認
# 認証していない場合はエラー

node01:~ #
podman pull dlp.srv.world:5000/opensuse:my-registry --tls-verify=false

Trying to pull dlp.srv.world:5000/debian:my-registry...
Error: initializing source docker://dlp.srv.world:5000/debian:my-registry: reading manifest my-registry in dlp.srv.world:5000/debian: authentication required
# [htpasswd] で登録したユーザーで認証

node01:~ #
podman login dlp.srv.world:5000 --tls-verify=false

Username: suse
Password:
Login Succeeded!
node01:~ #
podman pull dlp.srv.world:5000/opensuse:my-registry --tls-verify=false

node01:~ #
podman images

REPOSITORY                        TAG          IMAGE ID      CREATED        SIZE
dlp.srv.world:5000/opensuse       my-registry  004d9956dc10  2 weeks ago    118 MB
[4] HTTPS でアクセスする場合 且つ Let's Encrypt 等から取得した有効な SSL/TLS 証明書 を使用する場合は以下のように設定します。
当例では、SSL 証明書はリンク先の例のように [/etc/letsencrypt/live/dlp.srv.world] 配下に取得している前提で進めます。
dlp:~ #
cp -p /etc/letsencrypt/live/dlp.srv.world/{fullchain,privkey}.pem /etc/containers/registries.conf.d/

dlp:~ #
chown registry /etc/containers/registries.conf.d/{fullchain,privkey}.pem

dlp:~ #
vi /etc/registry/config.yml
# [http] セクション配下に [tls] セクションを追記して証明書を指定

.....
.....
http:
  addr: 0.0.0.0:5000
  tls:
    certificate: /etc/containers/registries.conf.d/fullchain.pem
    key: /etc/containers/registries.conf.d/privkey.pem
.....
.....

dlp:~ #
systemctl restart registry
# 任意のノードでアクセス確認
# HTTPS のため [insecure-registries] の登録不要

node01:~ #
podman pull dlp.srv.world:5000/opensuse:my-registry

node01:~ #
podman images

REPOSITORY                        TAG          IMAGE ID      CREATED        SIZE
dlp.srv.world:5000/opensuse       my-registry  004d9956dc10  2 weeks ago    118 MB
関連コンテンツ