2.11. Pod への OCI イメージのマウント


Open Container Initiative (OCI) 準拠のコンテナーイメージまたはアーティファクトを、Pod に直接マウントできます。これにより、イメージ内のファイルにコンテナーがアクセスできるようになり、ファイルをベースイメージに含める必要がなくなります。その結果、OCI 準拠のレジストリーでデータをホストすることが可能になります。

2.11.1. イメージボリューム

イメージボリューム を使用すると、Open Container Initiative (OCI) 準拠のコンテナーイメージまたはアーティファクトを、Pod に直接マウントできます。これにより、イメージ内のファイルにコンテナーがアクセスできるようになり、ファイルをベースイメージに含める必要がなくなります。そのため、OCI 準拠のレジストリーでデータをホストすることが可能になります。

Pod でイメージボリュームを使用すると、OCI イメージおよびディストリビューション仕様標準を活用して、次のユースケースを含むいくつかのタスクを実行できます。

  • Pod 内の複数のコンテナー間で設定ファイルを共有でき、ベースイメージにファイルを含める必要がなくなるため、セキュリティーリスクとイメージサイズが最小限に抑えられます。
  • 人工知能環境では、イメージボリュームを使用して、モデルサーバーと一緒に、大規模言語モデルの重みまたは機械学習モデルの重みを Pod にマウントできます。この方法により、モデルサーバーのコンテナーイメージにモデルの重みを含めなくても、モデルの重みを効率的に提供できます。したがって、モデルの仕様とコンテンツを、それらを処理する実行可能ファイルから分離することができます。
  • バイナリーアーティファクトをパッケージ化して配布し、Pod に直接マウントすることで、CI/CD パイプラインを合理化できます。これにより、CI/CD アーティファクトをイメージボリュームにアタッチすることで、ベースイメージを少数に抑えることが可能になります。
  • マルウェアスキャナー用のパブリックイメージを使用し、それをプライベートなマルウェアシグネチャーを含むボリュームにマウントできます。これにより、パブリックイメージの著作権によって許可されていない可能性があるベースイメージへのイメージの組み込みを行うことなく、それらのシグネチャーをロードできます。

イメージボリュームをマウントするには、Pod へのイメージボリュームの追加 で説明されているように、イメージまたはアーティファクトへのパスを、オプションのプルポリシーとともに Pod 仕様に含めます。

2.11.2. Pod へのイメージボリュームの追加

Open Container Initiative (OCI) 準拠のコンテナーイメージまたはアーティファクトをマウントするには、volume パラメーターを使用して、イメージまたはアーティファクトへのパスを、オプションのプルポリシーとともに Pod 仕様に含めます。Pod を直接作成することも、デプロイメントやレプリカセットなどの制御オブジェクトを使用することもできます。

手順

  1. 以下のような YAML ファイルを作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: image-volume
    spec:
      containers:
      - name: shell
        command: ["sleep", "infinity"]
        image: debian
        volumeMounts:
        - name: volume
          mountPath: /volume
      volumes:
      - name: volume
        image: 
    1
    
          reference: quay.io/crio/artifact:v2 
    2
    
          pullPolicy: Always 
    3
    Copy to Clipboard Toggle word wrap
    1
    ホストマシンで使用可能な OCI コンテナーイメージまたはアーティファクトを指定します。
    2
    イメージまたはアーティファクトへのパスを指定します。
    3
    プルポリシーを指定します。次のいずれかのオプションを使用します。
    • Always の場合、kubelet は常にイメージのプルを試行します。プルが失敗すると、kubelet は Pod を Failed に設定します。
    • Never の場合、kubelet はイメージをプルせず、ローカルイメージまたはアーティファクトのみを使用します。イメージのいずれかのレイヤーがローカルに存在しない場合、またはそのイメージのマニフェストがまだキャッシュされていない場合、Pod が Failed 状態になります。
    • IfNotPresent の場合、kubelet はイメージが存在しない場合にイメージをプルします。イメージが存在せずプルが失敗すると、Pod が Failed になります。これがデフォルトです。
  2. 以下のコマンドを実行して Pod を作成します。

    $ oc create -f <file_name>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のようなコマンドを使用して Pod を調べ、イメージのプルとマウントに関する詳細情報を確認します。

    $ oc describe pod <pod_name>
    Copy to Clipboard Toggle word wrap

    出力例

    Name:             image-volume
    Namespace:        default
    # ...
    Volumes:
      volume: 
    1
    
        Type:        Image (a container image or OCI artifact)
        Reference:   quay.io/crio/artifact:v2
        PullPolicy:  IfNotPresent
    # ...
    Events:
      Type    Reason          Age                From               Message
      ----    ------          ----               ----               -------
    # ...
      Normal  Pulling         46s                kubelet            Pulling image "quay.io/crio/artifact:v2"
      Normal  Pulled          44s                kubelet            Successfully pulled image "quay.io/crio/artifact:v2" in 2.261s (2.261s including waiting). Image size: 6707 bytes. 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    イメージボリュームが Pod にマウントされたことを示します。
    2
    イメージが正常にプルされたことを示します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat