4.2. イメージのタグ付け
以下のセクションでは、OpenShift Container Platform イメージストリームおよびそれらのタグを操作するためにコンテナーイメージのコンテキストでイメージタグを使用する概要および方法について説明します。
4.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
コマンドを提供しますが、イメージ上で直接動作するのではなくイメージストリーム上で動作します。
4.2.2. イメージタグの規則
イメージは時間の経過と共に変化するもので、それらのタグはその変化を反映します。ほとんどの場合、イメージタグはビルドされる最新イメージを常に参照します。
v2.0.1-may-2019
のように、タグ名に非常に多くの情報が組み込まれる場合、タグはイメージの単一のリビジョンのみを参照し、更新されることはありません。デフォルトのイメージのプルーニングオプションを使用しても、このようなイメージは削除されません。非常に大規模なクラスターでは、イメージが修正されるたびに新規タグが作成される設定の場合、古くなって久しいイメージの余分のタグメタデータで etcd データストアが一杯になる可能性があります。
タグの名前が v2.0
である場合はイメージのリビジョンの数が多くなることが予想されます。これによりタグ履歴が長くなるため、イメージプルーナーが古くなり使われなくなったイメージを削除する可能性が高くなります。
タグの名前付け規則は各自で定めることができますが、ここでは <image_name>:<image_tag>
形式のいくつかの例を見てみましょう。
説明 | 例 |
---|---|
リビジョン |
|
アーキテクチャー |
|
ベースイメージ |
|
最新 (不安定な可能性がある) |
|
最新 (安定性がある) |
|
タグ名に日付を含める必要がある場合、古くなり使用されなくなったイメージおよび istags
を定期的に検査し、これらを削除してください。そうしないと、古いイメージを保持して、リソースの使用量が増大する可能性があります。
4.2.3. タグのイメージストリームへの追加
OpenShift Container Platform のイメージストリームは、タグで識別される 0 個以上のコンテナーイメージで構成されます。
各種のタグを利用できます。デフォルト動作では、特定の時点の特定のイメージを参照する永続タグを使用します。_permanent_tag が使用され、ソースが変更される場合、タグは宛先について変更されません。
追跡 タグの場合は、宛先タグのメタデータがソースタグのインポート時に更新されます。
手順
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
など) を作成するには、追跡タグを使用します。このタグは単一イメージストリーム内でのみ適切に機能します。複数のイメージストリーム間で使用されるエイリアスを作成しようとするとエラーが生じます。
-
また、
--scheduled=true
フラグを追加して、宛先タグが定期的に更新 (再インポート) されるようにもできます。期間はシステムレベルでグローバルに設定できます。 --reference
フラグは、インポートされていないイメージストリームタグを作成します。このタグはソースの場所を参照しますが、これを永続的に参照します。統合レジストリーのタグ付けされたイメージを常にフェッチするように OpenShift に指示するには、
--reference-policy=local
を使用します。レジストリーはプルスルー (pull-through) 機能を使用してイメージをクライアントに提供します。デフォルトで、イメージ Blob はレジストリーによってローカルにミラーリングされます。その結果、それらが次回必要となる場合により迅速にプルされます。また、このフラグは--insecure-registry
をコンテナーランタイムに指定しなくても、イメージストリームに非セキュアなアノテーションがあるか、またはタグに非セキュアなインポートポリシーがある限り、非セキュアなレジストリーからのプルを許可します。
4.2.4. タグのイメージストリームからの削除
タグをイメージストリームから削除できます。
手順
タグをイメージストリームから完全に削除するには、以下を実行します。
$ oc delete istag/ruby:latest
または、以下を実行します。
$ oc tag -d ruby:latest
4.2.5. イメージストリームでのイメージの参照
タグを使用してイメージストリームのイメージを参照するには、以下の参照タイプを使用します。
参照タイプ | 説明 |
---|---|
|
|
|
|
|
|
イメージストリーム定義のサンプルを表示すると、これらには 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
4.2.6. 追加情報
- CentOS イメージストリームのイメージストリーム定義の例。