FreeBSD 15

Podman : Registry を利用する2026/01/09

 

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

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

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

root@dlp:~ #
service docker_registry enable

registry enabled in /etc/rc.conf
root@dlp:~ #
service docker_registry start
root@dlp:~ #
podman images

REPOSITORY                TAG         IMAGE ID      CREATED            SIZE
localhost/freebsd-nginx   latest      3cd54285ea87  29 minutes ago     1.02 GB
localhost/freebsd-httpd   latest      dbf5f8b9e7e2  38 minutes ago     1.19 GB
localhost/freebsd-base    latest      afb96df72092  About an hour ago  902 MB
quay.io/centos/centos     stream10    e9ac565bc256  2 days ago         316 MB
docker.io/library/ubuntu  latest      c3a134f2ace4  2 months ago       80.6 MB

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

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

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

Getting image source signatures
Copying blob 6af2ef15f616 done   |
Copying config afb96df720 done   |
Writing manifest to image destination
root@dlp:~ #
podman images

EPOSITORY                       TAG          IMAGE ID      CREATED            SIZE
localhost/freebsd-nginx          latest       3cd54285ea87  32 minutes ago     1.02 GB
localhost/freebsd-httpd          latest       dbf5f8b9e7e2  40 minutes ago     1.19 GB
dlp.srv.world:5000/freebsd-base  my-registry  afb96df72092  About an hour ago  902 MB
localhost/freebsd-base           latest       afb96df72092  About an hour ago  902 MB
quay.io/centos/centos            stream10     e9ac565bc256  2 days ago         316 MB
docker.io/library/ubuntu         latest       c3a134f2ace4  2 months ago       80.6 MB

# リモートホストから [pull]

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

root@node01:~ #
podman images

REPOSITORY                       TAG          IMAGE ID      CREATED            SIZE
dlp.srv.world:5000/freebsd-base  my-registry  afb96df72092  About an hour ago  902 MB
[3] Basic 認証を有効にする場合は以下のように設定します。
root@dlp:~ #
pkg install -y apache24
root@dlp:~ #
vi /usr/local/etc/docker-registry/config.yml
# [auth] セクションをコメント解除して [path] 変更

auth:
  htpasswd:
    realm: basic-realm
    path: /usr/local/etc/containers/.htpasswd

root@dlp:~ #
service docker_registry restart
# 任意のユーザー登録
# [-B] ⇒ bcrypt を使用する : registry は bcrypt のみサポート
# [-c] ⇒ オプションは新規ファイル作成のため初回のみ付与

root@dlp:~ #
htpasswd -Bc /usr/local/etc/containers/.htpasswd freebsd
# 任意のノードでアクセス確認
# 認証していない場合はエラー

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

Trying to pull dlp.srv.world:5000/freebsd-base:my-registry...
Error: unable to copy from source docker://dlp.srv.world:5000/freebsd-base:my-registry: initializing source docker://dlp.srv.world:5000/freebsd-base:my-registry: reading manifest my-registry in dlp.srv.world:5000/freebsd-base: authentication required

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

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

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

root@node01:~ #
podman images

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

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

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

root@dlp:~ #
service docker_registry restart
# 任意のノードでアクセス確認

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

root@node01:~ #
podman images

REPOSITORY                       TAG          IMAGE ID      CREATED            SIZE
dlp.srv.world:5000/freebsd-base  my-registry  afb96df72092  About an hour ago  902 MB
関連コンテンツ