14.3. コンテナープルシークレットの設定
コンテナーイメージを取得できるようにするには、ホストシステムを "プルシークレット" を使用して設定する必要があります。これには、ホスト自体の更新も含まれます。詳細は、Image Mode for RHEL でのシークレットの注入 ドキュメントに関する付録を参照してください。
コンテナープルシークレットは、すでにビルドされたイメージに設定できます。ベアメタル用の Anaconda などの外部インストーラーや bootc-image-builder
を使用する場合は、適切なプルシークレットを使用してシステムを設定する必要があります。
ホストの bootc 更新では、rpm-ostree
と共有される /etc/ostree/auth.json
ファイルに設定が書き込まれます。
Podman にはシステム全体の認証情報がありません。Podman は、次のディレクトリー配下にある containers-auth
の場所を受け付けます。
-
/run
: このディレクトリーの内容は再起動時に消去されます。これは望ましくありません。 -
/root
: root のホームディレクトリーの一部。デフォルトではローカルで変更可能な状態です。
bootc
と Podman の認証情報を統合するには、bootc
と Podman の両方に単一のデフォルトのグローバルプルシークレットを使用します。次のコンテナービルドは、bootc
と Podman の認証情報を統合する例です。この例では、creds
という名前のシークレットに、ビルドするレジストリープルシークレットが含まれていることを想定しています。
手順
-
単一のプルシークレットを使用するために、
bootc
と Podman の間にシンボリックリンクを作成します。シンボリックリンクを作成することにより、コンテナーイメージに埋め込まれる共通の永続ファイルに対する両方の場所を確保できます。 /usr/lib/container-auth.json
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow FROM quay.io/<namespace>/<image>:<tag> COPY containers-auth.conf /usr/lib/tmpfiles.d/link-podman-credentials.conf RUN --mount=type=secret,id=creds,required=true cp /run/secrets/creds /usr/lib/container-auth.json && \ chmod 0600 /usr/lib/container-auth.json && \ ln -sr /usr/lib/container-auth.json /etc/ostree/auth.json
FROM quay.io/<namespace>/<image>:<tag> COPY containers-auth.conf /usr/lib/tmpfiles.d/link-podman-credentials.conf RUN --mount=type=secret,id=creds,required=true cp /run/secrets/creds /usr/lib/container-auth.json && \ chmod 0600 /usr/lib/container-auth.json && \ ln -sr /usr/lib/container-auth.json /etc/ostree/auth.json
Containerfile を実行すると、次の操作が実行されます。
-
Containerfile により、
/run/containers/0/auth.json
が一時的なランタイムファイルになります。 -
/usr/lib/container-auth.json
へのシンボリックリンクが作成されます。 -
また、永続ファイルも作成されます。このファイルにも、
/etc/ostree/auth.json
からのシンボリックリンクが設定されます。
-
Containerfile により、