Podman : Registry を利用する2024/05/05 |
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 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/ubuntu-nginx latest 1b1a4d3f4f26 2 hours ago 125 MB srv.world/ubuntu-apache2 latest 38d508336863 2 hours ago 226 MB docker.io/library/ubuntu latest bf3dc08bfed0 5 days ago 78.7 MB # ローカルホストから [push] root@dlp:~# podman tag ubuntu dlp.srv.world:5000/ubuntu:my-registry --tls-verify=false root@dlp:~# podman push dlp.srv.world:5000/ubuntu:my-registry --tls-verify=false root@dlp:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE srv.world/ubuntu-nginx latest 1b1a4d3f4f26 2 hours ago 125 MB srv.world/ubuntu-apache2 latest 38d508336863 2 hours ago 226 MB dlp.srv.world:5000/ubuntu my-registry bf3dc08bfed0 5 days ago 78.7 MB docker.io/library/ubuntu latest bf3dc08bfed0 5 days ago 78.7 MB # 他ノードから [pull] root@node01:~# podman pull dlp.srv.world:5000/ubuntu:my-registry --tls-verify=false root@node01:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/ubuntu my-registry bf3dc08bfed0 5 days ago 78.7 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 ubuntu New password: Re-type new password: Adding password for user ubuntu
root@dlp:~#
systemctl restart docker-registry
# 任意のノードでアクセス確認 # 認証していない場合はエラー root@node01:~# podman pull dlp.srv.world:5000/ubuntu:my-registry --tls-verify=false Trying to pull dlp.srv.world:5000/ubuntu:my-registry... Error: initializing source docker://dlp.srv.world:5000/ubuntu:my-registry: reading manifest my-registry in dlp.srv.world:5000/ubuntu: authentication required # [htpasswd] で登録したユーザーで認証 root@node01:~# podman login dlp.srv.world:5000 --tls-verify=false
Username: ubuntu
Password:
Login Succeeded!
root@node01:~# podman pull dlp.srv.world:5000/ubuntu:my-registry --tls-verify=false root@node01:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/ubuntu my-registry bf3dc08bfed0 5 days ago 78.7 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/ubuntu:my-registry root@node01:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/ubuntu my-registry bf3dc08bfed0 5 days ago 78.7 MB |
Sponsored Link |
|