Debian 13 trixie

Podman : Registry を利用する2025/08/22

 

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

[1] Registry をインストールします。
root@dlp:~#
apt -y install docker-registry
[2] Registry の設定です。
HTTP 通信 且つ 認証なしの場合の設定です。
root@dlp:~#
vi /etc/docker/registry/config.yml
# 認証なしの場合は以下のように [auth] セクションはコメント化

version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/docker-registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
#auth:
#  htpasswd:
#    realm: basic-realm
#    path: /etc/docker/registry/htpasswd
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

root@dlp:~#
systemctl restart docker-registry
# 任意のクライアントからアクセス可能か確認

root@dlp:~#
podman images

REPOSITORY                TAG         IMAGE ID      CREATED         SIZE
srv.world/debian-nginx    latest      33b7b5b10b13  17 minutes ago  157 MB
srv.world/debian-apache2  latest      a0aca892bf29  25 minutes ago  234 MB
docker.io/library/debian  latest      047bd8d81940  11 days ago     124 MB

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

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

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

root@dlp:~#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED         SIZE
srv.world/debian-nginx     latest       33b7b5b10b13  18 minutes ago  157 MB
srv.world/debian-apache2   latest       a0aca892bf29  26 minutes ago  234 MB
dlp.srv.world:5000/debian  my-registry  047bd8d81940  11 days ago     124 MB
docker.io/library/debian   latest       047bd8d81940  11 days ago     124 MB

# 他ノードから [pull]

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

root@node01:~#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED      SIZE
dlp.srv.world:5000/debian  my-registry  047bd8d81940  11 days ago  124 MB
[3] Basic 認証を有効にする場合は以下のように設定します。
root@dlp:~#
apt -y install apache2-utils
root@dlp:~#
vi /etc/docker/registry/config.yml
# [auth] セクションをコメント解除して passwd ファイルのパスを指定

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

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

root@dlp:~#
htpasswd -Bc /etc/containers/registries.conf.d/.htpasswd debian

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

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

root@node01:~#
podman pull dlp.srv.world:5000/debian: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] で登録したユーザーで認証

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

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

root@node01:~#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED      SIZE
dlp.srv.world:5000/debian  my-registry  047bd8d81940  11 days ago  124 MB
[4] 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/registries.conf.d/

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

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

.....
.....
http:
  addr: :5000
  tls:
    certificate: /etc/containers/registries.conf.d/fullchain.pem
    key: /etc/containers/registries.conf.d/privkey.pem
  headers:
    X-Content-Type-Options: [nosniff]
.....
.....

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

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

root@node01:~#
podman images

REPOSITORY                 TAG          IMAGE ID      CREATED      SIZE
dlp.srv.world:5000/debian  my-registry  047bd8d81940  11 days ago  124 MB
関連コンテンツ