の名前空間に画像を追加する Container Registry
IBM Cloud® Container Registry の ネームスペースにイメージをレジストリーに保管するリポジトリーのコレクション。 名前空間は、複数の名前空間を含めることができる IBM Cloud アカウントに関連付けられます。画像を追加することで、 Docker の画像を安全に保存し、他のユーザーと共有することができます。
名前空間に追加するすべてのイメージは、まずローカル・コンピューターに存在していなければなりません。 他のリポジトリからローカルコンピュータにイメージをダウンロード(プル)するか、 Docker build
コマンドを使って DockerfileからDocker イメージをビルドするための指示が含まれるテキスト・ファイル。独自のイメージを構築することができます。
イメージを名前空間に追加するには、ローカル・イメージを IBM Cloud Container Registry の名前空間にアップロード (プッシュ) する必要があります。
コンテナー・イメージ、名前空間名、説明フィールド、イメージ構成データ (イメージ名やイメージ・ラベルなど) に個人情報を含めないでください。
別のレジストリーからのイメージのプル
個人または公共の 登録コンテナーの作成に使用されるパブリック・イメージまたはプライベート・イメージを含むストレージおよび配布サービス。ソースから画像をコンピュータに取り込み(ダウンロード)、後で IBM Cloud Container Registry で使用するためにタグ付けすることができます。
始める前に、以下の作業を実行します。
-
CLI をインストールして、名前空間のイメージを処理します。
-
root権限なしで Docker コマンドを実行できることを確認してください。 Docker クライアントが root 権限を必要とするようにセットアップされている場合は、
ibmcloud login
、ibmcloud cr login
、docker pull
、およびdocker push
の各コマンドをsudo
を使用して実行する必要があります。root 権限なしで Docker コマンドを実行できるように権限を変更した場合は、再度
ibmcloud login
コマンドを実行する必要があります。
-
イメージをダウンロードします。「始めに」ドキュメントのイメージのプルを参照してください。
unauthorized: authentication required
またはdenied: requested access to the resource is denied
メッセージが表示された場合は、ibmcloud cr login
コマンドを実行します。
イメージをプルしてタグを名前空間に付けた後、イメージをローカル・コンピューターから名前空間にアップロード (プッシュ) できます。
Container Registry からイメージをプルするワークロードをデプロイすると、ポッドが ImagePullBackOff 状況で失敗する場合は、ImagePullBackOff または許可エラーでレジストリーからイメージをプルできないのはなぜですか? を参考にしてください。
Docker イメージの名前空間へのプッシュ
IBM Cloud Container Registry、自分のコンピュータからネームスペースに画像をプッシュ(アップロード)して保存し、他のユーザーと共有することができます。
始める前に、以下の作業を実行します。
-
CLI をインストールして、名前空間のイメージを処理します。
-
root権限なしで Docker コマンドを実行できることを確認してください。 Docker クライアントが root 権限を必要とするようにセットアップされている場合は、
ibmcloud login
、ibmcloud cr login
、docker pull
、およびdocker push
の各コマンドをsudo
を使用して実行する必要があります。root 権限なしで Docker コマンドを実行できるように権限を変更した場合は、再度
ibmcloud login
コマンドを実行する必要があります。
IBM Cloud Container Registry は、Docker と同様にさまざまなクライアントもサポートします。 他のクライアントを使用してログインするには、対話式に名前空間にアクセスするを参照してください。
イメージをアップロード (プッシュ) するには、以下の手順を実行します。
-
ibmcloud cr login
コマンドを実行して CLI にログインします。ibmcloud cr login
プライベート IBM Cloud Container Registry からイメージをプルする場合は、ログインする必要があります。
ログインに問題がある場合は、Container Registry にログインできないのはなぜですか? を参考にしてください。
-
ご使用のアカウントで利用できるすべての名前空間を表示するには、
ibmcloud cr namespace-list
コマンドを実行します。 -
「
unauthorized: authentication required
」または「denied: requested access to the resource is denied
」というメッセージを受け取った場合は、ibmcloud cr login
コマンドを実行してください。
イメージを IBM Cloud Container Registry にプッシュすると、以下のタスクのいずれかを実行できます。
- Vulnerability Advisor によるセキュリティー管理で、潜在的なセキュリティー問題および脆弱性についての情報を検索
- クラスターを作成し、このイメージを使用してコンテナーを IBM Cloud Kubernetes Service のクラスターにデプロイ。
レジストリー間でのイメージのコピー
ある地域のレジストリからイメージをプルし、別の地域のレジストリにプッシュすることで、レジストリ間でイメージをコピーし、両方の地域のユーザーとイメージを共有することができます。
始める前に、以下の作業を実行します。
-
CLI をインストールして、名前空間のイメージを処理します。
-
root権限なしで Docker コマンドを実行できることを確認してください。 Docker クライアントが root 権限を必要とするようにセットアップされている場合は、
ibmcloud login
、ibmcloud cr login
、docker pull
、およびdocker push
の各コマンドをsudo
を使用して実行する必要があります。root 権限なしで Docker コマンドを実行できるように権限を変更した場合は、再度
ibmcloud login
コマンドを実行する必要があります。
2 つのレジストリー間でイメージをコピーするには、次の手順を実行します。
- イメージをレジストリーからプルします。
- イメージを別のレジストリーにプッシュします。 対象となる新しいリージョンについて、正しいドメイン名を使用していることを確認してください。
イメージをコピーした後、以下のいずれかのタスクを実行できます。
- Vulnerability Advisor で画像のセキュリティを管理 し、潜在的なセキュリティ問題や脆弱性に関する情報を見つける。
- クラスターを作成し、このイメージを使用してコンテナーを IBM Cloud Kubernetes Service のクラスターにデプロイ。
ソース・イメージを参照するイメージの作成
ibmcloud cr image-tag
コマンドを使用してイメージを作成します。
ログインしているリージョンで、同じリージョンにある既存のイメージを参照する IBM Cloud Container Registry でイメージを作成します。 このアクションは、ソース・イメージがサポート対象バージョンの Docker Engine を使用して作成されている場合にサポートされます (Docker のサポートを参照)。
このメカニズムを使用して作成した新しいイメージは、シグニチャーを保持しません。 新しいイメージに署名が必要な場合は、このメカニズムを使用しないでください。
始める前に、以下の作業を実行します。
- CLI をインストールして、名前空間のイメージを処理します。
- 別のイメージを参照したいソース・イメージが含まれている IBM Cloud Container Registry のプライベート名前空間にアクセスできるようにします。
ソース・イメージからイメージを作成するには、以下の手順を実行します。
-
ibmcloud cr login
コマンドを実行して CLI にログインします。ibmcloud cr login
-
以下のコマンドを実行して、新しい参照を追加します。
SOURCE_IMAGE
はソース・イメージの名前、TARGET_IMAGE
はターゲット・イメージの名前です。 ソース・イメージとターゲット・イメージは、同一のリージョン内になければなりません。SOURCE_IMAGE
の形式はrepository:tag
またはrepository@digest
で、TARGET_IMAGE
の形式はrepository:tag
(例:us.icr.io/namespace/image:latest
) でなければなりません。イメージの名前を調べるには、
ibmcloud cr image-list
を実行します。 Repository 列の内容 (repository
) と Tag 列の内容 (tag
) をコロン (:
) で区切って連結し、repository:tag
形式のイメージ名を作成します。 ダイジェストでイメージを特定するには、ibmcloud cr image-digests
コマンドを実行します。 「Repository」 列の内容 (repository
) と 「Digest」 列の内容 (digest
) をアットマーク (@
) で区切って連結し、repository@digest
形式のイメージ名を作成します。 画像の一覧表示コマンドがタイムアウトする場合は、「 画像を一覧表示するときにタイムアウトするのはなぜですか?ibmcloud cr image-tag [SOURCE_IMAGE] [TARGET_IMAGE]
-
以下のコマンドを実行して、新しいイメージが作成されたことを確認し、そのイメージがソース・イメージと同じイメージ・ダイジェストによってリスト内に表示されていることを検証します。
ibmcloud cr image-list
名前空間で使用する Docker イメージのビルド
IBM Cloud で Docker イメージを直接ビルドするか、または独自の Docker イメージをローカル・コンピューターに作成して、IBM Cloud Container Registry の名前空間にアップロード (プッシュ) できます。
始める前に、以下の作業を実行します。
-
CLI をインストールして、名前空間のイメージを処理します。
-
root権限なしで Docker コマンドを実行できることを確認してください。 Docker クライアントが root 権限を必要とするようにセットアップされている場合は、
ibmcloud login
、ibmcloud cr login
、docker pull
、およびdocker push
の各コマンドをsudo
を使用して実行する必要があります。root 権限なしで Docker コマンドを実行できるように権限を変更した場合は、再度
ibmcloud login
コマンドを実行する必要があります。
Docker イメージは、作成するすべてのコンテナーの基礎となるものです。 イメージは、Dockerfile (イメージをビルドするための指示が入ったファイル) から作成されます。 Dockerfile の指示の中で、別個に保管されているビルド成果物 (アプリ、アプリの構成、依存関係など) を参照していることもあります。
IBM Cloud コンピューティング・リソースを利用したいが、インターネット接続または Docker がワークステーションにインストールされていない場合は、IBM Cloudでイメージを直接ビルドします。 ファイアウォールの内側に存在するサーバーのリソースにビルドでアクセスする必要がある場合は、イメージをローカルでビルドします。
独自の Docker イメージをビルドするには、以下の手順を実行します。
-
ビルド・コンテキストを保管するローカル・ディレクトリーを作成します。 ビルド・コンテキストには、Dockerfile および関連するビルド成果物 (アプリ・コードなど) が保管されます。 コマンド・ライン・ウィンドウで、このディレクトリーにナビゲートします。
-
Dockerfile を作成します。
-
ローカル・ディレクトリーに Dockerfile を作成します。
touch Dockerfile
-
テキスト・エディターを使用して Dockerfile を開きます。 少なくとも、イメージをビルドする元の基本イメージを追加する必要があります。
SOURCE_IMAGE
とTAG
を、使用するイメージ・リポジトリーとタグに置き換えます。 他のプライベートレジストリのイメージを使う場合は、 IBM Cloud Container Registry でイメージへのフルパスを定義する。FROM SOURCE_IMAGE:TAG
例えば、公開されている IBM WebSphere Application Server Liberty (
ibm/liberty
) イメージをベースにした Dockerfile を作成するには、以下のコマンドを使用します。FROM icr.io/ibm/liberty:latest LABEL description="This is my test Dockerfile" EXPOSE 9080
この例では、イメージ・メタデータにラベルを追加し、ポート 9080 を公開します。 その他のDockerfileの使い方については、 Dockerfileリファレンスを参照してください。
-
-
イメージの名前を決めます。 画像名は以下の形式でなければなりません。
REGION
はリージョン、MY_NAMESPACE
はネームスペース情報、REPO_NAME
はリポジトリ名、TAG
は画像に使用するバージョンです:REGION.icr.io/MY_NAMESPACE/REPO_NAME:TAG
名前空間を見つけるには、
ibmcloud cr namespace-list
コマンドを実行します。 -
Dockerfile を含むディレクトリーのパスをメモします。 作業ディレクトリーをビルド・コンテキストの保管場所に設定した状態で、以下の手順のコマンドを実行する場合は、
DIRECTORY
をピリオド (.) に置き換えることができます。 -
イメージをローカルでビルドしてテストし、IBM Cloud にプッシュします。
-
ローカル・コンピューターの Dockerfile からイメージをビルドし、イメージ名でタグ付けします。ここでは、
IMAGE_NAME
はイメージの名前、DIRECTORY
はディレクトリーへのパスを指します。docker build -t IMAGE_NAME DIRECTORY
-
オプション: イメージを名前空間にプッシュする前に、ローカル・コンピューターでテストします。
docker run IMAGE_NAME
IMAGE_NAME
をイメージの名前に置き換えます。 -
イメージを作成し、そのイメージに名前空間でタグ付けしてから、IBM Cloud Container Registry の名前空間にイメージをプッシュします。
-
Vulnerability Advisor を使用してイメージのセキュリティーをチェックするには、Vulnerability Advisor によるイメージ・セキュリティーの管理を参照してください。
API キーを使用したイメージのプッシュ
APIキーをAPIリクエストの認証と承認に使用される固有のコード。 このコードは、呼び出し元のアプリケーションまたはユーザーを識別し、APIの使用状況を追跡・管理するためにAPIに渡されます。使用して画像を IBM Cloud Container Registry にプッシュするサービスIDを作成します。
以下のステップを実行します。
- サービス IDを作成します。サービス ID の作成および処理を参照してください。
- レジストリーにアクセスする権限をサービス ID に付与するポリシー (管理者役割やマネージャー役割など) を作成します (Container Registry に対する IAM アクセス権限の管理を参照)。
- API キーを作成します。サービス ID の API キーの作成を参照してください。
- レジストリーにイメージをプッシュできるように、API キーを使用してレジストリーにログインします。IBM Cloud Container Registry へのアクセスの自動化を参照してください。
- イメージをプッシュします。Docker イメージの名前空間へのプッシュを参照してください。
これで、クラスターを使用してイメージをプルできるようになりました。イメージからのコンテナーのビルドを参照してください。
プライベート・リポジトリーのイメージからのタグの削除
1 つまたは複数のタグを、プライベート IBM Cloud リポジトリー内のイメージから削除し、基になるイメージとその他のタグをそのまま残す場合は、ibmcloud cr image-untag
コマンドを使用します。
リポジトリーにある同じイメージ・ダイジェストに複数のタグが存在し、対象のイメージとそのすべてのタグを削除する場合は、プライベート IBM Cloud リポジトリーからのイメージの削除を参照してください。
CLI を使用して 1 つまたは複数のタグを削除するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
タグを削除するには、次のコマンドを実行します。
IMAGE
は、削除するイメージの名前 (形式はrepository:tag
) です。 イメージ名の中にタグを指定しないと、コマンドが失敗します。 複数のイメージのタグを削除するには、コマンドの各専用 IBM Cloud レジストリー・パスを一覧表示します (各パス間にワンスペースを挿入すること)。ibmcloud cr image-untag IMAGE
イメージの名前を調べるには、
ibmcloud cr image-list
を実行します。 Repository 列の内容 (repository
) と Tag 列の内容 (tag
) をコロン (:
) で区切って連結し、repository:tag
形式のイメージ名を作成します。 -
以下のコマンドを実行してタグが削除されたことを検証し、リスト内にタグが表示されないことを確認します。
ibmcloud cr image-list
画像の一覧表示コマンドがタイムアウトする場合は、「 画像を一覧表示するときにタイムアウトするのはなぜですか?
プライベート・リポジトリーからのイメージの削除
IBM Cloud コンソールまたは CLI を使用して、不要なイメージをプライベート IBM Cloud リポジトリーから削除できます。
プライベート・リポジトリーとその関連イメージを削除する場合は、プライベート・リポジトリーおよび関連するイメージの削除を参照してください。
既存のデプロイメントで使用されているイメージを削除すると、スケールアップ、スケジュール変更、またはその両方が失敗する場合があります。
削除したイメージを復元する場合は、ibmcloud cr trash-list
コマンドを実行してごみ箱の内容をリストし、ibmcloud cr image-restore
コマンドを実行して、選択したイメージを復元します。
リポジトリー内で同じイメージ・ダイジェストに複数のタグが存在する場合、ibmcloud cr image-rm
コマンドを実行すると、基になるイメージとそのすべてのタグが削除されます。 同じイメージが別のリポジトリや名前空間に存在する場合、イメージのコピーは削除されません。 イメージからタグを削除し、対象のイメージと他のタグを残す場合は、
プライベート・リポジトリー内のイメージからのタグの削除コマンドを参照してください。
CLI でのプライベート・リポジトリーからのイメージの削除
CLI を使用して、不要なイメージとそのすべてのタグをプライベート IBM Cloud リポジトリーから削除できます。
既存のデプロイメントで使用されているイメージを削除すると、スケールアップ、スケジュール変更、またはその両方が失敗する場合があります。
削除したイメージを復元する場合は、ibmcloud cr trash-list
コマンドを実行してごみ箱の内容をリストし、ibmcloud cr image-restore
コマンドを実行して、選択したイメージを復元します。
CLI を使用してイメージを削除するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
イメージを削除するには、次のコマンドを実行します。
IMAGE
は、削除するイメージの名前 (形式はrepository@digest
またはrepository:tag
) です。 イメージ名の中にタグを指定しない場合、デフォルトでは、latest
というタグが付いたイメージが削除されます。 複数のイメージを削除するには、コマンドの各専用 IBM Cloud レジストリー・パスを一覧表示します (各パス間にワンスペースを挿入すること)。ibmcloud cr image-rm IMAGE
イメージの名前を調べるには、
ibmcloud cr image-list
を実行します。 Repository 列の内容 (repository
) と Tag 列の内容 (tag
) をコロン (:
) で区切って連結し、repository:tag
形式のイメージ名を作成します。 ダイジェストでイメージを特定するには、ibmcloud cr image-digests
コマンドを実行します。 「Repository」 列の内容 (repository
) と 「Digest」 列の内容 (digest
) をアットマーク (@
) で区切って連結し、repository@digest
形式のイメージ名を作成します。 画像の一覧表示コマンドがタイムアウトする場合は、「 画像を一覧表示するときにタイムアウトするのはなぜですか? -
以下のコマンドを実行し、リスト中にイメージが表示されないことを確認して、イメージが削除されたことを検証します。
ibmcloud cr image-list
コンソールでのプライベート・リポジトリーからのイメージの削除
IBM Cloud コンソールを使用して、不要なイメージとそのすべてのタグをプライベート IBM Cloud イメージ・リポジトリーから削除できます。
既存のデプロイメントで使用されているイメージを削除すると、スケールアップ、スケジュール変更、またはその両方が失敗する場合があります。
削除したイメージを復元する場合は、ibmcloud cr trash-list
コマンドを実行してごみ箱の内容をリストし、ibmcloud cr image-restore
コマンドを実行して、選択したイメージを復元します。
IBM Cloud コンソールを使用してイメージを削除するには、以下のステップを実行します。
- IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインしてください。
- 複数の IBM Cloud アカウントをお持ちの場合は、アカウントメニューから使用するアカウントと地域を選択します。
- 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
- 「イメージ」 をクリックします。 イメージのリストが表示されます。
- 削除しようとしているイメージを含む行で、チェック・ボックスを選択します。
- 「イメージの削除」 をクリックします。
ごみ箱の中のイメージのリスト
削除されてごみ箱に入っているイメージをリストし、保持期限を確認することができます。
ごみ箱の中のイメージを表示するには、ibmcloud cr trash-list
コマンドを使用します。 イメージは、ごみ箱に 30 日間保管されます。
ごみ箱の中のイメージをリストするには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行して、ごみ箱の中のイメージをリストします。
ibmcloud cr trash-list
-
以下のコマンドを実行して、特定の名前空間のごみ箱内のイメージのみをリストします。
NAMESPACE
は対象の名前空間です。ibmcloud cr trash-list --restrict NAMESPACE
イメージの復元
イメージをごみ箱から復元できます。 削除したイメージはごみ箱に 30 日間保管されます。
ごみ箱の中のイメージは、ibmcloud cr image-restore
コマンドを実行して復元できます。 ごみ箱の中のイメージを表示するには、ibmcloud cr trash-list
コマンドを実行します。
イメージは、ibmcloud cr image-restore
コマンドを実行して復元できます。 以下のオプションを使用できます。
ダイジェストによるイメージの復元
ダイジェストを使用してイメージを復元すると、そのダイジェストがごみ箱からライブ・リポジトリーにコピーされ、リポジトリーにあるそのダイジェストのすべてのタグが復元されます。 コピーが復元されるので、ダイジェストはごみ箱に表示され続けます。
ダイジェストを使用してごみ箱からイメージを復元するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行して、ごみ箱の中のイメージをリストします。
ibmcloud cr trash-list
ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。
-
復元するイメージのダイジェストをメモします。
-
以下のコマンドを実行して、イメージをリポジトリーに復元します。
DNS
はドメイン名、NAMESPACE
は名前空間、REPO
はリポジトリー、DIGEST
は復元するイメージのダイジェストです。ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
一部のタグが復元されない場合は、「 ダイジェストで復元したときにすべてのタグが復元されないのはなぜですか?
ライブ・リポジトリーで、このイメージをダイジェストを使用してプルすることができます。
ibmcloud cr image-digests
コマンドを実行すると、イメージが出力に表示されます。
タグによるイメージの復元
タグを使用してイメージを復元する場合は、その特定のタグだけがごみ箱からライブ・リポジトリーに移動されます。
タグを使用してごみ箱からイメージを復元するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行して、ごみ箱の中のイメージをリストします。
ibmcloud cr trash-list
ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。
-
リストアしたい画像について、アットマーク(
@
)までのダイジェストをメモしてください。ダイジェストのこのセクションはDNS/NAMESPACE/REPO
で、DNS
はドメイン名、NAMESPACE
はネームスペース、REPO
はリポジトリです。 -
復元するイメージのタグ
TAG
をメモします。 -
以下のコマンドを実行して、イメージをリポジトリーに復元します。
DNS/NAMESPACE/REPO
はリストアするイメージの名前、TAG
はタグです。ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
ライブ・リポジトリーで、このイメージをタグを使用してプルすることができます。
イメージのリストア時に、タグ付けされたイメージが存在するというエラーが発生した場合は、「 イメージのリストア時にエラーが発生するのはなぜですか?
ibmcloud cr trash-list
コマンドを実行すると、対応するダイジェストおよび他のタグはすべて出力に表示されますが、このタグは表示されなくなります。
プライベート・リポジトリーおよび関連イメージの削除
IBM Cloud コンソールを使用して、不要になったプライベート・リポジトリーおよび関連するイメージを削除することができます。
リポジトリーを削除すると、そのリポジトリー内のすべてのイメージも削除されます。 このアクションは元に戻すことができません。
始める前に、保持するイメージをすべてバックアップしておく必要があります。
IBM Cloud コンソールを使用してプライベート・リポジトリーを削除するには、以下のステップを実行します。
-
IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインしてください。
-
複数の IBM Cloud アカウントをお持ちの場合は、アカウントメニューから使用するアカウントと地域を選択します。
-
「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
-
「リポジトリー」 をクリックします。 プライベート・リポジトリーのリストが表示されます。
-
削除しようとしているプライベート・リポジトリーを含む行で、チェック・ボックスを選択します。
この操作は元に戻せないので、正しいリポジトリーを選択したことを確認してください。
-
「リポジトリーの削除」 をクリックします。