FreeBSD 14
Sponsored Link

Podman : Registry を利用する2024/02/29

 
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      a0a053cc78a3  17 hours ago  1.17 GB
localhost/freebsd-httpd   latest      add46dedb2b7  23 hours ago  1.44 GB
localhost/freebsd-base    latest      2527bfa5eeb4  43 hours ago  1.05 GB
quay.io/centos/centos     stream9     ce3ac91d4020  2 weeks ago   161 MB
docker.io/library/ubuntu  latest      3db8720ecbf5  2 weeks ago   80.4 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 e08c67379022 done   |
Copying config 2527bfa5ee done   |
Writing manifest to image destination
root@dlp:~ #
podman images

REPOSITORY                       TAG          IMAGE ID      CREATED       SIZE
localhost/freebsd-nginx          latest       a0a053cc78a3  17 hours ago  1.17 GB
localhost/freebsd-httpd          latest       add46dedb2b7  23 hours ago  1.44 GB
localhost/freebsd-base           latest       2527bfa5eeb4  43 hours ago  1.05 GB
dlp.srv.world:5000/freebsd-base  my-registry  2527bfa5eeb4  43 hours ago  1.05 GB
quay.io/centos/centos            stream9      ce3ac91d4020  2 weeks ago   161 MB
docker.io/library/ubuntu         latest       3db8720ecbf5  2 weeks ago   80.4 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  2527bfa5eeb4  43 hours ago  1.05 GB
[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 -B -c /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: initializing source docker://dlp.srv.world:5000/freebsd-base:my-registry: reading manifest my-registry in dlp.srv.world:5000/freebsd-base: StatusCode: 400,

# [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  2527bfa5eeb4  44 hours ago  1.05 GB
[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  2527bfa5eeb4  44 hours ago  1.05 GB
関連コンテンツ