5.2. イメージのタグ付け

以下のセクションでは、OpenShift Container Platform イメージストリームおよびそれらのタグを操作するためにコンテナーイメージのコンテキストでイメージタグを使用する概要および方法について説明します。

5.2.1. イメージタグ

イメージタグは、イメージストリーム内の他のイメージから特定のイメージを識別するリポジトリーのコンテナーイメージに適用されるラベルです。通常、タグはある種のバージョン番号を表します。たとえば、ここでは :v3.11.59-2 がタグになります。

registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2

イメージにタグを追加することができます。たとえば、イメージには :v3.11.59-2 および :latest というタグが割り当てられる可能性があります。

OpenShift Container Platform は docker tag コマンドに似た oc tag コマンドを提供しますが、これらはイメージ上で直接動作するのではなくイメージストリームで動作します。

5.2.2. イメージタグの規則

イメージは時間の経過と共に変化するもので、それらのタグはその変化を反映します。ほとんどの場合、イメージタグはビルドされる最新イメージを常に参照します。

v2.0.1-may-2019 のように、タグ名に非常に多くの情報が組み込まれる場合、タグはイメージの単一のリビジョンのみを参照し、更新されることはありません。デフォルトのイメージのプルーニングオプションを使用しても、このようなイメージは削除されません。非常に大規模なクラスターでは、イメージが修正されるたびに新規タグが作成される設定の場合、古くなって久しいイメージの余分のタグメタデータで etcd データストアが一杯になる可能性があります。

タグの名前が v2.0 である場合はイメージのリビジョンの数が多くなることが予想されます。これによりタグ履歴が長くなるため、イメージプルーナーが古くなり使われなくなったイメージを削除する可能性が高くなります。

タグの名前付け規則は各自で定めることができますが、ここでは <image_name>:<image_tag> 形式のいくつかの例を見てみましょう。

表5.1 イメージタグの名前付け規則

説明

リビジョン

myimage:v2.0.1

アーキテクチャー

myimage:v2.0-x86_64

ベースイメージ

myimage:v1.2-centos7

最新 (不安定な可能性がある)

myimage:latest

最新 (安定性がある)

myimage:stable

タグ名に日付を含める必要がある場合、古くなり使用されなくなったイメージおよび istags を定期的に検査し、これらを削除してください。そうしないと、古いイメージを保持して、リソースの使用量が増大する可能性があります。

5.2.3. タグのイメージストリームへの追加

OpenShift Container Platform のイメージストリームは、タグで識別される 0 個以上のコンテナーイメージで設定されます。

各種のタグを利用できます。デフォルト動作では、特定の時点の特定のイメージを参照する 永続 タグを使用します。permanent タグが使用され、ソースが変更される場合、タグは宛先について変更されません。

tracking タグの場合は、宛先タグのメタデータがソースタグのインポート時に更新されます。

手順

  • oc tag コマンドを使用して、タグをイメージストリームに追加できます。

    $ oc tag <source> <destination>

    たとえば、ruby イメージストリームの static-2.0 タグを ruby イメージストリーム 2.0 タグの現行のイメージを常に参照するように設定するには、以下を実行します。

    $ oc tag ruby:2.0 ruby:static-2.0

    これにより、ruby イメージストリームに static-2.0 という名前のイメージストリームタグが新たに作成されます。この新規タグは、oc tag の実行時に ruby:2.0 イメージストリームタグが参照したイメージ ID を直接参照し、これが参照するイメージが変更されることがありません。

  • 宛先タグがソースタグの変更時に更新されるようにするには、--alias=true フラグを使用します。

    $ oc tag --alias=true <source> <destination>
注記

永続的なエイリアス (latest または stable など) を作成するには、tracking タグを使用します。このタグは単一イメージストリーム内でのみ適切に機能します。複数のイメージストリーム間で使用されるエイリアスを作成しようとするとエラーが生じます。

  • また、--scheduled=true フラグを追加して、宛先タグが定期的に更新 (再インポート) されるようにもできます。期間はシステムレベルでグローバルに設定できます。
  • --reference フラグはインポートされないイメージストリームを作成します。このタグはソースの場所を参照しますが、これを永続的に参照します。

    統合レジストリーのタグ付けされたイメージを常にフェッチするように OpenShift Container Platform に指示するには、--reference-policy=local を使用します。レジストリーはプルスルー (pull-through) 機能を使用してイメージをクライアントに提供します。デフォルトで、イメージ Blob はレジストリーによってローカルにミラーリングされます。その結果、それらが次回必要となる場合により迅速にプルされます。また、このフラグは --insecure-registry をコンテナーランタイムに指定しなくても、イメージストリームに非セキュアなアノテーションがあるか、またはタグに非セキュアなインポートポリシーがある限り、非セキュアなレジストリーからのプルを許可します。

5.2.4. タグのイメージストリームからの削除

タグをイメージストリームから削除できます。

手順

  • タグをイメージストリームから完全に削除するには、以下を実行します。

    $ oc delete istag/ruby:latest

    または、以下を実行します。

    $ oc tag -d ruby:latest

5.2.5. イメージストリームでのイメージの参照

タグを使用してイメージストリームのイメージを参照するには、以下の参照タイプを使用します。

表5.2 イメージストリームの参照タイプ

参照タイプ説明

ImageStreamTag

ImageStreamTag は、所定のイメージストリームおよびタグのイメージを参照し、取得するために使用されます。

ImageStreamImage

ImageStreamImage は、所定のイメージストリームおよびイメージ sha ID を参照するか、または取得するために使用されます。

DockerImage

DockerImage は、所定の外部レジストリーのイメージを参照または取得するために使用されます。この名前は、標準の Docker pull specification に基づいて付けられます。

イメージストリーム定義のサンプルを表示すると、これらには ImageStreamTag の定義と DockerImage の参照が含まれていますが、ImageStreamImage に関連するものは何も含まれていないことに気づくでしょう。

これは、ImageStreamImage オブジェクトが、イメージをイメージストリームにインポートしたり、タグ付けしたりする際に OpenShift Container Platform に自動的に作成されるためです。イメージストリームを作成するために使用するイメージストリーム定義で ImageStreamImage オブジェクトを明示的に定義する必要はありません。

手順

  • 所定のメージストリームおよびタグのイメージを参照するには、ImageStreamTag を使用します。

    <image_stream_name>:<tag>
  • 所定のイメージストリームおよびイメージの sha ID のイメージを参照するには、ImageStreamImage を使用します。

    <image_stream_name>@<id>

    <id> は、ダイジェストとも呼ばれる特定イメージのイミュータブルな ID です。

  • 所定の外部レジストリーのイメージを参照または取得するには、DockerImage を使用します。

    openshift/ruby-20-centos7:2.0
    注記

    タグが指定されていない場合、latest タグが使用されることが想定されます。

    サードパーティーのレジストリーを参照することもできます。

    registry.redhat.io/rhel7:latest

    またはダイジェストでイメージを参照できます。

    centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e