Fedora 38
Sponsored Link

Podman : Registry を利用する2023/04/26

 
Registry をインストールして、コンテナーイメージのプライベートレジストリーサーバーを構築します。
[1] Registry をインストールします。
[root@dlp ~]#
dnf -y install docker-distribution
[2] Firewalld を有効にしている場合は、ポートの許可が必要です。
[root@dlp ~]#
firewall-cmd --add-port=5000/tcp

success
[root@dlp ~]#
firewall-cmd --runtime-to-permanent

success
[3] Registry の設定です。
HTTP 通信 且つ 認証なしの場合の設定です。
[root@dlp ~]#
vi /etc/docker-distribution/registry/config.yml
# デフォルトの設定
# HTTP 且つ 認証なしの場合は変更不要

version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
http:
    addr: :5000

[root@dlp ~]#
systemctl enable --now docker-distribution
[root@dlp ~]#
podman images

REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
srv.world/fedora-nginx             latest      97533117cdc8  16 minutes ago  420 MB
srv.world/fedora-httpd             latest      51d32e13e2f4  21 minutes ago  477 MB
registry.fedoraproject.org/fedora  latest      c9bfca6d0ac2  6 days ago      196 MB

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

[root@dlp ~]#
podman tag fedora dlp.srv.world:5000/fedora:my-registry

[root@dlp ~]#
podman push dlp.srv.world:5000/fedora:my-registry --tls-verify=false

[root@dlp ~]#
podman images

REPOSITORY                         TAG          IMAGE ID      CREATED         SIZE
srv.world/fedora-nginx             latest       97533117cdc8  16 minutes ago  420 MB
srv.world/fedora-httpd             latest       51d32e13e2f4  22 minutes ago  477 MB
registry.fedoraproject.org/fedora  latest       c9bfca6d0ac2  6 days ago      196 MB
dlp.srv.world:5000/fedora          my-registry  c9bfca6d0ac2  6 days ago      196 MB

# 他ノードから [pull]

[root@node01 ~]#
podman pull dlp.srv.world:5000/fedora:my-registry --tls-verify=false

[root@node01 ~]#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED     SIZE
dlp.srv.world:5000/fedora  my-registry  c9bfca6d0ac2  6 days ago  196 MB
[4] Basic 認証を有効にする場合は以下のように設定します。
[root@dlp ~]#
dnf -y install httpd-tools
[root@dlp ~]#
vi /etc/docker-distribution/registry/config.yml
# 最終行に追記

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

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

[root@dlp ~]#
htpasswd -Bc /etc/containers/registries.d/.htpasswd fedora

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

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

[root@node01 ~]#
podman pull dlp.srv.world:5000/fedora:my-registry --tls-verify=false

Trying to pull dlp.srv.world:5000/fedora:my-registry...
Error: initializing source docker://dlp.srv.world:5000/fedora:my-registry: reading manifest my-registry in dlp.srv.world:5000/fedora: unauthorized: authentication required

# [htpasswd] で登録したユーザーで認証

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

Username: fedora
Password:
Login Succeeded!
[root@node01 ~]#
podman pull dlp.srv.world:5000/fedora:my-registry --tls-verify=false

[root@node01 ~]#
podman images

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

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

.....
.....
http:
    addr: :5000
    tls:
      certificate: /etc/containers/certs.d/fullchain.pem
      key: /etc/containers/certs.d/privkey.pem
.....
.....

[root@dlp ~]#
systemctl restart docker-distribution
# 任意のノードでアクセス確認

[root@node01 ~]#
podman pull dlp.srv.world:5000/fedora:my-registry

[root@node01 ~]#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED     SIZE
dlp.srv.world:5000/fedora  my-registry  c9bfca6d0ac2  6 days ago  196 MB
関連コンテンツ