機械翻訳について

13 コンテナ・レジストリ

Podmanで構成されたコンテナ・レジストリを使用して、コンテナ・イメージをプルします。 自己ホスト・コンテナ・レジストリを作成し、レジストリ・ミラーを作成します。

コンテナ・レジストリは、Open Container Initiativeイメージのストアです。 コンテナ・イメージは、実行するコンテナの作成に使用する読取り専用テンプレートです。 レジストリ内のコンテナ・イメージは、必要に応じてデプロイできます。

デフォルトでは、Oracle Linuxシステムは、一般的に使用される次のレジストリへのアクセス権で構成されます:

  • Oracle Container Registry(container-registry.oracle.com)

  • Docker Hub(docker.io)

セキュリティを向上させ、不注意に侵害されたイメージを実行することに対して緩和するために署名されている場合、コンテナ・レジストリからイメージのみを信頼するようにコンテナ・ランタイムを構成できます。 詳細は、「署名付きイメージに対するPodmanの構成」を参照してください。

エンタープライズ環境では、ローカルのコンテナ・レジストリの設定も検討できます。 ローカル・コンテナ・レジストリには、カスタマイズされたコンテナから変換されたイメージを格納できます。 その後、これらのイメージを将来のコンテナ・デプロイメントに使用できます。 ローカル・コンテナ・レジストリにイメージを格納すると、一括デプロイのために実行する必要があるカスタマイズ構成の量が削減されます。 ローカル・レジストリは、アップストリーム・レジストリからプルされたイメージをキャッシュおよびホストすることもできます。これにより、ローカル・システムにまたがって一致するコンテナをデプロイすると、ネットワークのオーバーヘッドとレイテンシがさらに軽減されます。

Oracle Container Registry

Oracle Container Registryを使用して、オープン・ソースおよびライセンスのあるOracleソフトウェア・コンテナ・イメージをプルします。

Oracle Container Registryは、コンテナ・イメージを安全に格納および共有するためのオープン標準ベースのOracle管理コンテナ・レジストリ・サービスです。 Oracle Container Registryには、ライセンスされたOracleソフトウェアとオープン・ソースの両方のOracleソフトウェアが含まれ、イメージはOracleによって構築および署名されています。 コンテナ・イメージの使用には、該当するライセンスの条件が適用されます。

Oracle Container Registryは、https://container-registry.oracle.comにあります。 これには、Webインタフェースが用意されていて、組織が使用できるソフトウェアのイメージを参照および選択できます。 Oracle Container Registryは、オープン・ソースとライセンスされているOracle製品の両方のコンテナ・イメージをホストします。 ライセンス・コンテンツでは、イメージをダウンロードする前に、ライセンス契約条件を認証して同意する必要があります。 サインインする前に、認証トークンを生成する必要があります。

ノート:

オープン・ソース・コンテナ・イメージをプルするために、認証トークンを作成し、Oracle Container Registryにサインインする必要はありません。これはライセンス・イメージにのみ必要であるためです。

Oracle Container Registryのいずれかのミラーを使用すると、それぞれの地理的なリージョンでダウンロードを高速化できます。

Oracle Container Registryからのオープン・ソース・ソフトウェアのプル

イメージをプルするための正しいコマンドは、Oracle Container RegistryのWebインタフェースのリポジトリ情報ページに用意されています。 同じページで、イメージとその実行方法に関するその他の有用な情報も得られます。

Oracle Container Registryミラーを使用している場合は、次のステップのURLを変更してミラーのURLを使用します。 ミラーの使用の詳細は、Oracle Container Registryミラーの使用を参照してください。

Oracle Container Registryからイメージをプルするには、次のpodman pullコマンドを使用します。

podman pull container-registry.oracle.com/area/image:tag

areaをOracle Container Registryのリポジトリの場所に置き換え、imageをソフトウェア・イメージの名前に置き換えます。 たとえば:

podman pull container-registry.oracle.com/os/oraclelinux:9-slim

areaimageは小文字で指定されます。 イメージを参照する場合は、使用する適切なタグを常に指定することをお薦めします。

Oracle Linuxイメージのタグ付け規則の詳細は、Oracle Linuxコンテナ・イメージのタグ付け規則を参照してください。

Oracle Container Registryからのライセンス所有ソフトウェアのプル

Oracle Container Registryには、ライセンスされている商用のOracleソフトウェア製品のイメージが含まれています。 Oracle Container Registryでライセンスされているソフトウェアのイメージをプルするには、Oracle Accountがあり、認証トークンが作成されている必要があります。 Oracleアカウントは、https://profile.oracle.com/myprofile/account/create-account.jspxで作成できます。 認証トークンの作成の詳細は、「Oracle Container Registry認証トークンの生成」を参照してください。

ノート:

オープン・ソースのOracleソフトウェア・イメージ(ライセンス供与されたソフトウェア・イメージのみ)をプルするために、Oracle Container Registryにサインインしたり、Oracle標準条件および制限事項に同意する必要はありません。

Oracle Container Registryミラーを使用している場合は、次のステップのURLを変更してミラーのURLを使用します。 ミラーの使用の詳細は、Oracle Container Registryミラーの使用を参照してください。

  1. Oracle Container Registryにサインインします。

    Webブラウザで、Oracleアカウントを使用してOracle Container Registryにサインインします(https://container-registry.oracle.com)。

  2. Oracle標準条件および制約事項に同意します。

    プルするOracleソフトウェア・イメージのOracle標準条件および制約事項に同意します。 この条件の同意は、Oracleアカウントにソフトウェア・イメージをリンクするデータベースに格納されます。 Oracle標準条件および制約事項の同意は、条件に同意するリポジトリに対してのみ有効です。 レジストリ内の他のリポジトリまたは新しいリポジトリからソフトウェアをプルしようとすると、このプロセスの繰返しが必要になることがあります。 Oracle標準条件および制約事項は予告なしに変更される場合があります。

  3. イメージを検索します。

    Oracle Container RegistryでOracleソフトウェア・イメージを参照または検索します。

  4. PodmanのOracle Container Registryにサインインします。

    ホスト・システムで、podman loginコマンドを使用して、Oracle Container Registryに対して認証します。

    podman login container-registry.oracle.com

    プロンプトが表示されたら、Oracleアカウントのユーザー名および関連するOracle Container Registry秘密キーをパスワード値として指定します。

  5. イメージをプルします

    podman pullコマンドを使用して、必要なイメージをプルします。たとえば:

    podman pull container-registry.oracle.com/java/serverjre

    イメージはOracle Container Registryからプルされ、コンテナのデプロイに使用できる状態でローカルに格納されます。

  6. PodmanでOracle Container Registryからサインアウトします。

    Oracle Container Registryからイメージをプルしたら、不正アクセスを防ぐためにレジストリからログアウトして、Podmanが今後の操作のために格納する可能性のあるサインイン資格証明のすべてのレコードを削除する必要があります。

    podman logout container-registry.oracle.com

Oracle Container Registry認証トークンの生成

ライセンスされたソフトウェアをOracle Container Registryからプルするには、認証トークンを生成し、podman loginコマンドの使用時にpassword値として使用します。

注意:

2025-06-30以降では、Oracle Container RegistryでPodmanを認証する際に、認証トークンが受け入れられる唯一の資格証明タイプです。
  1. Oracle Container Registryにサインインします。

    Webブラウザで、Oracleアカウントを使用してOracle Container Registryにサインインします(https://container-registry.oracle.com)。

  2. プロファイル名を選択します。

    プロファイル名を選択し、表示されるプロファイル・メニューで「認証トークン」を選択します。

  3. 秘密キーを生成します。

    「秘密キーの生成」を選択し、秘密キーを書き留めます。 これは、初期生成時に1回のみ表示されます。

  4. (オプション)秘密キーを再生成します。

    秘密キーを紛失または忘れた場合は、「秘密キーの削除」を選択して新しいキーを生成し、「秘密キーの生成」を再度選択します。

Oracle Container Registryミラーの使用

Oracle Container Registryには、世界中に多数のミラー・サーバーがあります。 特定のグローバル・リージョンにあるレジストリ・ミラーを使用すると、コンテナ・イメージのダウンロード・パフォーマンスを高めることができます。

使用可能なすべてのミラーと、特定のミラーからのイメージのプルに使用するコマンドをリストするには、Oracle Container RegistryのWebインタフェースにあるイメージの情報ページを参照してください。 情報ページの「タグ」表には、レジストリ・ミラーを選択するための「ミラーのダウンロード」ドロップダウン・リストが含まれています。 ミラーを選択すると、「プル・コマンド」列が変更され、選択したミラーからイメージをプルするコマンドが表示されます。

レジストリ・ミラーからライセンスされたOracleソフトウェア・イメージをダウンロードするには、まずOracle Container Registry WebインタフェースでOracle標準条件および制限事項に同意し、PodmanでOracle Container Registryにサインインする必要があります。 ライセンス・ソフトウェア・イメージのプルの詳細は、Oracle Container Registryからのライセンス・ソフトウェアのプルを参照してください。

定期的にミラーを使用する場合は、そのミラーを構成に追加して、デフォルトで検索およびプル・リクエストに使用されるようにします。 詳細は、レジストリの構成を参照してください。

例13-1ミラーからのイメージのプル

シドニー・ミラーからOracle Linux 9スリム・イメージをプルします:

podman pull container-registry-sydney.oracle.com/os/oraclelinux:9-slim

例13-2ミラーからのライセンス・イメージのプル

ライセンスされたOracleソフトウェア・イメージをプルするには、イメージをプルする前に、Oracle SSOユーザー名およびOracle Container Registry認証トークンを使用してOracle Container Registryミラーにサインインします。 イメージがプルされた後、レジストリからサインアウトすることをお薦めします。

たとえば、最新のJava Platform, Standard Edition (Java SE)イメージをプルするには:

podman login container-registry-sydney.oracle.com
podman pull container-registry-sydney.oracle.com/java/serverjre:latest
podman logout container-registry-sydney.oracle.com.oracle.com

Oracle Linuxコンテナ・イメージのタグ付け規則

Oracleでは、いくつかの規則に従ってOracle Linuxのコンテナ・イメージにタグ付けします。 ユーザーは、こうした規則に注意して、当面の目的に最適なイメージを使用することで不要な機能不全を回避し、イメージが最新のパッチを適用したソフトウェアを引き続き使用できるようにする必要があります。

slimタグ

Oracleでは、各Oracle Linuxリリースの最小限の圧縮バージョンをリリースします。 これらのイメージには、コンテナ内で実行し、さらに多くのパッケージのインストールを実行するための十分なOSが含まれています。 こうしたイメージは、ビルドで一般的に使用する推奨イメージで、スクリプト形式のインストールが使用される可能性があります。 このタグを使用するイメージは、最新の更新レベルで維持されます。

たとえば、最新バージョンのOracle Linux 9 slimイメージを使用する場合は、9-slimタグを使用します。 Oracle Linux 10スリム・イメージの最新バージョンを使用するには、10-slimタグを使用します。

FIPS準拠バージョンのイメージは、slim-fipsタグでタグ付けされます。 これらのイメージには、準拠した暗号化パッケージ・バージョンと、コンテナFIPS準拠に必要な初期イメージ設定のほとんどが含まれています。 これらのイメージを使用するには、ホスト・システムでFIPSモードを有効にする必要があります。

例13-3 Oracle Linux 9スリム・イメージのプル

最新バージョンのOracle Linux 9スリム・イメージをプルします:

podman pull oraclelinux:9-slim
一般的なOracle Linuxリリースのタグ

Oracle Linuxイメージはリリース・レベルでタグ付けされており、常に対応する最新の更新レベルにマップされるように維持されます。 スリム・イメージで提供されているバージョンよりも完全なOSが必要な場合は、リリース・タグを使用して、そのOracle Linuxイメージの最新イメージを取得します。

例13-4最新のOracle Linux 9イメージのプル

Oracle Linux 9の最新の更新リリース・イメージをプルします:

podman pull oraclelinux:9
Oracle Linuxの更新レベルのタグ

Oracle Linuxイメージは、更新レベルでタグ付けされます。 その他の記述されたタグは、Oracle Linuxイメージの最新または最新の更新レベルにマップされます。

警告:

特定の更新レベルを必要とする特定のユース・ケースがないかぎり、コンテナ・ファイル内またはビルド内で更新レベル・タグを直接使用しないでください。 一般的なユースケースとして、Oracle Linuxの特定の更新レベルにのみ存在する問題や不具合を解決する場合が挙げられます。

更新レベルのタグを使用すると、パッチが適用されていないソフトウェアがコンテナで実行され、セキュリティの問題やソフトウェアの不具合にさらされる可能性があります。

更新レベルのタグには、更新レベルを示すドット表記法を使用します。 たとえば、Oracle Linux 8.10は8.10タグを使用して示されます。

podman pull oraclelinux:8.10
latestタグ

重要:

Oracleでは、このタグをOracle Linuxのイメージに提供していません。 かわりに、slimイメージまたはリリース・タグを使用してください。 また、別の配布イメージまたはソフトウェア・イメージを操作する場合、ユーザーは、このタグに依存しないようにすることもお薦めします。

デフォルトの使用は、多くの場合に重大な混乱を引き起こし、エンド・ユーザーのビルドとスクリプト化された機能が中断されることがあります。 このため、イメージ・タグを使用する際のベスト・プラクティスを推奨するために、OracleではOracle Linuxイメージにlatestタグは提供されません。

このタグが使用できない理由を説明するために、このヘルプに関してOracleが判断した根拠は次のとおりです。

  • latestタグを使用すると、更新レベルではなくディストリビューション・リリース間で重大な飛び越しが発生する可能性があります。 これは、多くの場合、latestタグを選択するときにユーザーが意図することではありません。また、ツールによってはタグをまったく指定しないことでこのタグにフォールバックすることがあります。 想定される機能はリリース間で大幅に変化していて、コマンド、オプション、構成および使用可能なソフトウェアに変更が加えられていることがあります。

  • 特定のビルドに使用されたlatestイメージを識別する簡単な方法がないため、2つの最終ビルド・イメージの違いを確認することが困難になります。 この問題追跡の変更により、新しいビルドが失敗した場合に、既知の動作しているベース・イメージにロールバックすることも困難になります。

  • latestタグによるイメージのタグ付けは自動ではなく、latestとしてタグ付けされたイメージが更新されていないときに、それよりも新しいイメージが使用可能になっている可能性があります。 そのために、予期しない結果を招くことがあります。

  • すべてのツールがlatestタグを同様に扱うわけではありません。 一部のツールはアップストリームのレジストリから常にlatestタグの付いたイメージをプルするようにデフォルト設定されていて、その他のツールは期限切れになっていたとしてもローカルに格納されたlatestタグの付いたイメージがデフォルトに設定されていることがあります。

この決定によって、latestタグにフォールバックする一部のツールでは、イメージにタグが指定されていないときにエラーが発生する可能性があります。 たとえば、次のコマンドはエラーを返します。

podman pull docker.io/library/oraclelinux

エラーは次のようになります。

Trying to pull docker.io/library/oraclelinux:latest...
Error: initializing source docker://oraclelinux:latest: reading manifest latest in 
docker.io/library/oraclelinux: manifest unknown

使用するイメージには必ず適切なタグを指定してください。 たとえば:

podman pull container-registry.oracle.com/os/oraclelinux:9

Docker Hub

Docker Hubレジストリを使用して、ソフトウェア・コンテナ・イメージをプルします。

Docker Hubレジストリは、主にDockerでの使用を目的とするがPodmanとの互換性がある多くのソフトウェア・イメージを提供しています。 Docker Hubレジストリには、使用可能なイメージを参照するためのWebインタフェースが用意されています。

Docker Hubには、企業で使用する可能性のある商用Oracleソフトウェア製品のDockerイメージが含まれています。

Docker Hubでホストされているイメージにアクセスするには、有効なDockerアカウントでサインインする必要があります。 Dockerアカウントの作成およびDocker Hubの使用の詳細は、Docker Hubのドキュメントを参照してください。

Docker Hubには、インストールするDocker認定イメージの選択に使用できるWebインタフェースがあります。 一部のイメージでは、「チェックアウトに進む」を選択して、適用される可能性のある条件に同意するか、イメージにアクセスする前に必要に応じて支払を行う必要があります。

トランザクションの終了時に、イメージは「自分のコンテンツ」領域に格納され、後で再確認できます。 各イメージには説明と設定手順が示されています。

podman loginコマンドを使用して、Docker Hubにサインインし、イメージをプルします。 たとえば:

podman login docker.io
podman pull docker.io/library/alpine:latest
podman logout docker.io

署名付きイメージに対するPodmanの構成

Podmanを設定して、コンテナ・レジストリの検証済公開キーによって署名されたイメージをプルします。 署名されていないイメージはプルできません。

Podmanは、イメージに署名があり、提示された署名がローカルに格納されている公開キーに対して検証できる場合にのみ、リモート・レジストリからのイメージを信頼するように構成できます。 この構成オプションは、セキュリティの向上に役立ち、危険にさらされたイメージをインフラストラクチャで実行してしまう不注意を軽減できます。

イメージは、Oracle Linux yumサーバーで使用可能になるパッケージと同様の方法で署名されます。 GPGキーは、レジストリで提供されるイメージの署名に使用されます。 イメージごとのデジタル署名は、HTTPSを使用してアクセス可能な署名ストアに格納されます。 イメージ・ダイジェストに対する署名の検証に使用する公開GPGキーは、Podmanがインストールされているシステムで使用可能にしておく必要があります。

次のステップでは、リモート・レジストリのイメージをローカルで使用する前に、そのイメージの署名と検証を要求するようにPodmanホストを構成する方法を示します。

  1. レジストリ構成ファイルを作成します。

    署名検証が必要なレジストリごとに、/etc/containers/registries.d/ディレクトリ(または標準ユーザーの$HOME/.config/containers/registries.d/ディレクトリ)にYAML形式の構成ファイルを作成し、そのレジストリのsigstoreの値を指定します。

    たとえば、Oracle Container Registryの場合は、/etc/containers/registries.d/oracle.yamlファイルを作成し、次のコンテンツを移入します。

    docker:
      container-registry.oracle.com:
        sigstore: https://container-trust.oci.oraclecloud.com/podman

    詳細およびテンプレート構成を表示するには、/etc/containers/registries.d/default.yamlを参照してください。

  2. 公開GPGキーをダウンロードします。

    レジストリからのイメージの署名を検証するために使用する必要がある公開GPGキーをダウンロードして保存します。 Oracle Container Registryの場合、公開GPGキーはhttps://container-trust.oci.oraclecloud.com/podman/GPG-KEY-oracleからダウンロードできます。 たとえば:

    sudo mkdir -p /etc/pki/containers
    sudo wget -O /etc/pki/containers/GPG-KEY-oracle https://container-trust.oci.oraclecloud.com/podman/GPG-KEY-oracle
  3. コンテナ・ポリシーを設定します。

    コンテナのポリシー構成を編集して、特定のレジストリからプルされたイメージの署名を検証するために使用する公開GPGキーの場所を追加します。

    このポリシー構成はJSON形式で、/etc/containers/policy.jsonにあります。 レジストリ構成は、dockerキーの下にあります。このキーは、既存の構成のtransportsキーの下に追加することが必要になる場合があります。 たとえば、Oracle Container Registryのエントリを含めるように編集したデフォルトのポリシー構成は次のようになります。

    {
      "default": [
        {
          "type": "insecureAcceptAnything"
        }
      ],
      "transports":
        {
          "docker-daemon":
            {
              "": [{"type":"insecureAcceptAnything"}]
            },
          "docker":
            {
              "container-registry.oracle.com": [
                {
                  "type": "signedBy",
                  "keyType": "GPGKeys",
                  "keyPath": "/etc/pki/containers/GPG-KEY-oracle"
                }
              ]
            }
        }
    }

    この構成ファイルの形式の詳細は、containers-policy.json(5)マニュアル・ページを参照してください。

  4. 構成を検証します

    リモート・レジストリからイメージをプルして、構成が正しいことを検証します。 たとえば:

    podman pull container-registry.oracle.com/os/oraclelinux:9-slim

    署名要件が正しく構成されている場合、署名検証が構成されていないイメージをプルしても、出力は出力と異なります。

  5. (オプション)GPGキーが使用されていることを確認します。

    別のキーを使用するようにポリシー構成でGPG keyPathを設定することで、検証が実行されていることをテストできます。 たとえば、/etc/pki/rpm-gpg/RPM-GPG-KEY-oracleでRPMパッケージの検証に使用されるGPGキーを使用するようにパスを構成できます。 同じイメージをプルする場合、署名の検証は、次のようなエラーで失敗します。

    Trying to pull container-registry.oracle.com/os/oraclelinux:9-slim...
    Error: copying system image from manifest list: Source image rejected: Invalid GPG signature: 
    gpgme.Signature{Summary:128, Fingerprint:"4451CA2B13A2D6522D9E12DF357217938FC350A2", 
    Status:gpgme.Error{err:0x9}, Timestamp:time.Date(2025, time.July, 16, 19, 18, 22, 0, time.Local), 
    ExpTimestamp:time.Date(1970, time.January, 1, 0, 0, 0, 0, time.Local), WrongKeyUsage:false, 
    PKATrust:0x0, ChainModel:false, Validity:0, ValidityReason:error(nil), PubkeyAlgo:1, HashAlgo:8}

レジストリの構成

コンテナ・レジストリ構成ファイルを編集して、環境のレジストリ・オプションを設定します。 これは、システム全体およびユーザーに対して設定できます。

デフォルトのレジストリ設定を構成するには、TOML形式の/etc/containers/registries.confファイルを編集します。 構成ファイルは、使用可能なオプションについて説明するコメントが付いています。 システム全体の構成ファイル(/etc/containers/registries.conf)を$HOME/.config/containers/registries.confのユーザーのディレクトリにコピーすることで、ユーザー固有のレジストリ構成ファイルを作成できます。 たとえば:

cp /etc/containers/registries.conf $HOME/.config/containers/registries.conf

コンテナ・レジストリ構成ファイル内のすべてのオプションの詳細は、アップストリーム・ドキュメントまたはcontainers-registries.conf(5)マニュアル・ページを参照してください。

登録のリスト

コンテナ・イメージの検索時に使用するように構成されたレジストリを表示するには、次を使用します:

podman info --format='{{.Registries}}'

出力は次のようになります:

map[search:[container-registry.oracle.com docker.io]]

レジストリ順序の設定

ローカルで使用できないイメージをプルまたは使用しようとしたときに検索されるレジストリは、次の構成ブロックで定義します。
unqualified-search-registries = ["container-registry.oracle.com", "docker.io"]

レジストリは、このリストで定義した順序で順番に検索されます。 ローカル・レジストリが存在する場合は、リストの先頭に追加して、最初に検索するレジストリにします。

レジストリの追加

Podmanにレジストリを追加するには、Podmanシステム全体またはユーザー構成ファイルを編集して、unqualified-search-registriesエントリにレジストリを含めます。 コンテナ検索およびプルを実行する順序で追加します。 たとえば:

unqualified-search-registries = ["localhost:5000", "myregistry.example.com:5000", container-registry.oracle.com", "docker.io"]

レジストリがセキュアでないレジストリの場合は、[[registry]]セクションも編集し、レジストリの場所にinsecure = trueオプションを含めます。

[[registry]]
location = "localhost:5000"
insecure = true

セキュアでないレジストリの追加

有効なSSL証明書がないか、SSLを使用しないセキュアでないレジストリを使用するには、[[registry]]セクションを編集し、レジストリの場所にinsecure = trueオプションを含めます。 たとえば:

[[registry]]
location = myregistry.example.com:5000
insecure = true

[[registry]]
location = "localhost:5000"
insecure = true