IBM Cloud Docs
の名前空間に画像を追加する Container Registry

の名前空間に画像を追加する Container Registry

IBM Cloud® Container Registry の ネームスペースにイメージをレジストリーに保管するリポジトリーのコレクション。 名前空間は、複数の名前空間を含めることができる IBM Cloud アカウントに関連付けられます。画像を追加することで、 Docker の画像を安全に保存し、他のユーザーと共有することができます。

名前空間に追加するすべてのイメージは、まずローカル・コンピューターに存在していなければなりません。 他のリポジトリからローカルコンピュータにイメージをダウンロード(プル)するか、 Docker build コマンドを使って DockerfileからDocker イメージをビルドするための指示が含まれるテキスト・ファイル。独自のイメージを構築することができます。 イメージを名前空間に追加するには、ローカル・イメージを IBM Cloud Container Registry の名前空間にアップロード (プッシュ) する必要があります。

コンテナー・イメージ、名前空間名、説明フィールド、イメージ構成データ (イメージ名やイメージ・ラベルなど) に個人情報を含めないでください。

別のレジストリーからのイメージのプル

個人または公共の 登録コンテナーの作成に使用されるパブリック・イメージまたはプライベート・イメージを含むストレージおよび配布サービス。ソースから画像をコンピュータに取り込み(ダウンロード)、後で IBM Cloud Container Registry で使用するためにタグ付けすることができます。

プライベートまたはパブリックレジストリからコンピュータに画像を取り込む。
別のレジストリーからのイメージのプル

始める前に、以下の作業を実行します。

  1. イメージをダウンロードします。「始めに」ドキュメントのイメージのプルを参照してください。

    unauthorized: authentication required または denied: requested access to the resource is denied メッセージが表示された場合は、ibmcloud cr login コマンドを実行します。

イメージをプルしてタグ名前空間に付けた後、イメージをローカル・コンピューターから名前空間にアップロード (プッシュ) できます。

Container Registry からイメージをプルするワークロードをデプロイすると、ポッドが ImagePullBackOff 状況で失敗する場合は、ImagePullBackOff または許可エラーでレジストリーからイメージをプルできないのはなぜですか? を参考にしてください。

Docker イメージの名前空間へのプッシュ

IBM Cloud Container Registry、自分のコンピュータからネームスペースに画像をプッシュ(アップロード)して保存し、他のユーザーと共有することができます。

コンピュータから IBM Cloud Container Registry に画像をプッシュする。
Docker イメージを名前空間にプッシュする

始める前に、以下の作業を実行します。

IBM Cloud Container Registry は、Docker と同様にさまざまなクライアントもサポートします。 他のクライアントを使用してログインするには、対話式に名前空間にアクセスするを参照してください。

イメージをアップロード (プッシュ) するには、以下の手順を実行します。

  1. ibmcloud cr login コマンドを実行して CLI にログインします。

    ibmcloud cr login
    

    プライベート IBM Cloud Container Registry からイメージをプルする場合は、ログインする必要があります。

    ログインに問題がある場合は、Container Registry にログインできないのはなぜですか? を参考にしてください。

  2. ご使用のアカウントで利用できるすべての名前空間を表示するには、ibmcloud cr namespace-list コマンドを実行します。

  3. イメージを名前空間にアップロードします。

    unauthorized: authentication required」または「denied: requested access to the resource is denied」というメッセージを受け取った場合は、ibmcloud cr login コマンドを実行してください。

イメージを IBM Cloud Container Registry にプッシュすると、以下のタスクのいずれかを実行できます。

レジストリー間でのイメージのコピー

ある地域のレジストリからイメージをプルし、別の地域のレジストリにプッシュすることで、レジストリ間でイメージをコピーし、両方の地域のユーザーとイメージを共有することができます。

レジストリ間で画像をコピーする
レジストリー間でのイメージのコピー

始める前に、以下の作業を実行します。

2 つのレジストリー間でイメージをコピーするには、次の手順を実行します。

  1. イメージをレジストリーからプルします
  2. イメージを別のレジストリーにプッシュします。 対象となる新しいリージョンについて、正しいドメイン名を使用していることを確認してください。

イメージをコピーした後、以下のいずれかのタスクを実行できます。

ソース・イメージを参照するイメージの作成

ibmcloud cr image-tag コマンドを使用してイメージを作成します。

ログインしているリージョンで、同じリージョンにある既存のイメージを参照する IBM Cloud Container Registry でイメージを作成します。 このアクションは、ソース・イメージがサポート対象バージョンの Docker Engine を使用して作成されている場合にサポートされます (Docker のサポートを参照)。

このメカニズムを使用して作成した新しいイメージは、シグニチャーを保持しません。 新しいイメージに署名が必要な場合は、このメカニズムを使用しないでください。

始める前に、以下の作業を実行します。

  • CLI をインストールして、名前空間のイメージを処理します。
  • 別のイメージを参照したいソース・イメージが含まれている IBM Cloud Container Registry のプライベート名前空間にアクセスできるようにします。

ソース・イメージからイメージを作成するには、以下の手順を実行します。

  1. ibmcloud cr login コマンドを実行して CLI にログインします。

    ibmcloud cr login
    
  2. 以下のコマンドを実行して、新しい参照を追加します。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]
    
  3. 以下のコマンドを実行して、新しいイメージが作成されたことを確認し、そのイメージがソース・イメージと同じイメージ・ダイジェストによってリスト内に表示されていることを検証します。

    ibmcloud cr image-list
    

名前空間で使用する Docker イメージのビルド

IBM Cloud で Docker イメージを直接ビルドするか、または独自の Docker イメージをローカル・コンピューターに作成して、IBM Cloud Container Registry の名前空間にアップロード (プッシュ) できます。

始める前に、以下の作業を実行します。

Docker イメージは、作成するすべてのコンテナーの基礎となるものです。 イメージは、Dockerfile (イメージをビルドするための指示が入ったファイル) から作成されます。 Dockerfile の指示の中で、別個に保管されているビルド成果物 (アプリ、アプリの構成、依存関係など) を参照していることもあります。

IBM Cloud コンピューティング・リソースを利用したいが、インターネット接続または Docker がワークステーションにインストールされていない場合は、IBM Cloudでイメージを直接ビルドします。 ファイアウォールの内側に存在するサーバーのリソースにビルドでアクセスする必要がある場合は、イメージをローカルでビルドします。

独自の Docker イメージをビルドするには、以下の手順を実行します。

  1. ビルド・コンテキストを保管するローカル・ディレクトリーを作成します。 ビルド・コンテキストには、Dockerfile および関連するビルド成果物 (アプリ・コードなど) が保管されます。 コマンド・ライン・ウィンドウで、このディレクトリーにナビゲートします。

  2. Dockerfile を作成します。

    1. ローカル・ディレクトリーに Dockerfile を作成します。

      touch Dockerfile
      
    2. テキスト・エディターを使用して Dockerfile を開きます。 少なくとも、イメージをビルドする元の基本イメージを追加する必要があります。 SOURCE_IMAGETAG を、使用するイメージ・リポジトリーとタグに置き換えます。 他のプライベートレジストリのイメージを使う場合は、 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リファレンスを参照してください。

  3. イメージの名前を決めます。 画像名は以下の形式でなければなりません。 REGION はリージョン、 MY_NAMESPACE はネームスペース情報、 REPO_NAME はリポジトリ名、 TAG は画像に使用するバージョンです:

    REGION.icr.io/MY_NAMESPACE/REPO_NAME:TAG
    

    名前空間を見つけるには、ibmcloud cr namespace-list コマンドを実行します。

  4. Dockerfile を含むディレクトリーのパスをメモします。 作業ディレクトリーをビルド・コンテキストの保管場所に設定した状態で、以下の手順のコマンドを実行する場合は、DIRECTORY をピリオド (.) に置き換えることができます。

  5. イメージをローカルでビルドしてテストし、IBM Cloud にプッシュします。

    1. ローカル・コンピューターの Dockerfile からイメージをビルドし、イメージ名でタグ付けします。ここでは、IMAGE_NAME はイメージの名前、DIRECTORY はディレクトリーへのパスを指します。

      docker build -t IMAGE_NAME DIRECTORY
      
    2. オプション: イメージを名前空間にプッシュする前に、ローカル・コンピューターでテストします。

      docker run IMAGE_NAME
      

      IMAGE_NAME をイメージの名前に置き換えます。

    3. イメージを作成し、そのイメージに名前空間でタグ付けしてから、IBM Cloud Container Registry の名前空間にイメージをプッシュします

Vulnerability Advisor を使用してイメージのセキュリティーをチェックするには、Vulnerability Advisor によるイメージ・セキュリティーの管理を参照してください。

API キーを使用したイメージのプッシュ

APIキーをAPIリクエストの認証と承認に使用される固有のコード。 このコードは、呼び出し元のアプリケーションまたはユーザーを識別し、APIの使用状況を追跡・管理するためにAPIに渡されます。使用して画像を IBM Cloud Container Registry にプッシュするサービスIDを作成します。

以下のステップを実行します。

  1. サービス IDを作成します。サービス ID の作成および処理を参照してください。
  2. レジストリーにアクセスする権限をサービス ID に付与するポリシー (管理者役割やマネージャー役割など) を作成します (Container Registry に対する IAM アクセス権限の管理を参照)。
  3. API キーを作成します。サービス ID の API キーの作成を参照してください。
  4. レジストリーにイメージをプッシュできるように、API キーを使用してレジストリーにログインします。IBM Cloud Container Registry へのアクセスの自動化を参照してください。
  5. イメージをプッシュします。Docker イメージの名前空間へのプッシュを参照してください。

これで、クラスターを使用してイメージをプルできるようになりました。イメージからのコンテナーのビルドを参照してください。

プライベート・リポジトリーのイメージからのタグの削除

1 つまたは複数のタグを、プライベート IBM Cloud リポジトリー内のイメージから削除し、基になるイメージとその他のタグをそのまま残す場合は、ibmcloud cr image-untag コマンドを使用します。

リポジトリーにある同じイメージ・ダイジェストに複数のタグが存在し、対象のイメージとそのすべてのタグを削除する場合は、プライベート IBM Cloud リポジトリーからのイメージの削除を参照してください。

CLI を使用して 1 つまたは複数のタグを削除するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. タグを削除するには、次のコマンドを実行します。 IMAGE は、削除するイメージの名前 (形式は repository:tag) です。 イメージ名の中にタグを指定しないと、コマンドが失敗します。 複数のイメージのタグを削除するには、コマンドの各専用 IBM Cloud レジストリー・パスを一覧表示します (各パス間にワンスペースを挿入すること)。

    ibmcloud cr image-untag IMAGE
    

    イメージの名前を調べるには、ibmcloud cr image-list を実行します。 Repository 列の内容 (repository) と Tag 列の内容 (tag) をコロン (:) で区切って連結し、repository:tag 形式のイメージ名を作成します。

  3. 以下のコマンドを実行してタグが削除されたことを検証し、リスト内にタグが表示されないことを確認します。

    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 を使用してイメージを削除するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. イメージを削除するには、次のコマンドを実行します。 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 形式のイメージ名を作成します。 画像の一覧表示コマンドがタイムアウトする場合は、「 画像を一覧表示するときにタイムアウトするのはなぜですか?

  3. 以下のコマンドを実行し、リスト中にイメージが表示されないことを確認して、イメージが削除されたことを検証します。

    ibmcloud cr image-list
    

コンソールでのプライベート・リポジトリーからのイメージの削除

IBM Cloud コンソールを使用して、不要なイメージとそのすべてのタグをプライベート IBM Cloud イメージ・リポジトリーから削除できます。

既存のデプロイメントで使用されているイメージを削除すると、スケールアップ、スケジュール変更、またはその両方が失敗する場合があります。

削除したイメージを復元する場合は、ibmcloud cr trash-list コマンドを実行してごみ箱の内容をリストし、ibmcloud cr image-restore コマンドを実行して、選択したイメージを復元します。

IBM Cloud コンソールを使用してイメージを削除するには、以下のステップを実行します。

  1. IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインしてください。
  2. 複数の IBM Cloud アカウントをお持ちの場合は、アカウントメニューから使用するアカウントと地域を選択します。
  3. 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
  4. 「イメージ」 をクリックします。 イメージのリストが表示されます。
  5. 削除しようとしているイメージを含む行で、チェック・ボックスを選択します。
  6. 「イメージの削除」 をクリックします。

ごみ箱の中のイメージのリスト

削除されてごみ箱に入っているイメージをリストし、保持期限を確認することができます。

ごみ箱の中のイメージを表示するには、ibmcloud cr trash-list コマンドを使用します。 イメージは、ごみ箱に 30 日間保管されます。

ごみ箱の中のイメージをリストするには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行して、ごみ箱の中のイメージをリストします。

    ibmcloud cr trash-list
    
  3. 以下のコマンドを実行して、特定の名前空間のごみ箱内のイメージのみをリストします。NAMESPACE は対象の名前空間です。

    ibmcloud cr trash-list --restrict NAMESPACE
    

イメージの復元

イメージをごみ箱から復元できます。 削除したイメージはごみ箱に 30 日間保管されます。

ごみ箱の中のイメージは、ibmcloud cr image-restore コマンドを実行して復元できます。 ごみ箱の中のイメージを表示するには、ibmcloud cr trash-list コマンドを実行します。

イメージは、ibmcloud cr image-restore コマンドを実行して復元できます。 以下のオプションを使用できます。

  • REPO@DIGEST ダイジェストと そのタグのうち、まだライブリポジトリにないものすべてをリポジトリにリストアします。
  • REPO:TAG タグによる 画像の復元を 参照してください。

ダイジェストによるイメージの復元

ダイジェストを使用してイメージを復元すると、そのダイジェストがごみ箱からライブ・リポジトリーにコピーされ、リポジトリーにあるそのダイジェストのすべてのタグが復元されます。 コピーが復元されるので、ダイジェストはごみ箱に表示され続けます。

ダイジェストを使用してごみ箱からイメージを復元するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行して、ごみ箱の中のイメージをリストします。

    ibmcloud cr trash-list
    

    ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。

  3. 復元するイメージのダイジェストをメモします。

  4. 以下のコマンドを実行して、イメージをリポジトリーに復元します。 DNSドメイン名NAMESPACE名前空間REPOリポジトリーDIGEST は復元するイメージのダイジェストです。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
    

    一部のタグが復元されない場合は、「 ダイジェストで復元したときにすべてのタグが復元されないのはなぜですか?

    ライブ・リポジトリーで、このイメージをダイジェストを使用してプルすることができます。 ibmcloud cr image-digests コマンドを実行すると、イメージが出力に表示されます。

タグによるイメージの復元

タグを使用してイメージを復元する場合は、その特定のタグだけがごみ箱からライブ・リポジトリーに移動されます。

タグを使用してごみ箱からイメージを復元するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行して、ごみ箱の中のイメージをリストします。

    ibmcloud cr trash-list
    

    ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。

  3. リストアしたい画像について、アットマーク(@ )までのダイジェストをメモしてください。ダイジェストのこのセクションは DNS/NAMESPACE/REPO で、 DNS はドメイン名、 NAMESPACE はネームスペース、 REPO はリポジトリです。

  4. 復元するイメージのタグ TAG をメモします。

  5. 以下のコマンドを実行して、イメージをリポジトリーに復元します。DNS/NAMESPACE/REPO はリストアするイメージの名前、 TAG はタグです。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
    

    ライブ・リポジトリーで、このイメージをタグを使用してプルすることができます。

    イメージのリストア時に、タグ付けされたイメージが存在するというエラーが発生した場合は、「 イメージのリストア時にエラーが発生するのはなぜですか?

    ibmcloud cr trash-list コマンドを実行すると、対応するダイジェストおよび他のタグはすべて出力に表示されますが、このタグは表示されなくなります。

プライベート・リポジトリーおよび関連イメージの削除

IBM Cloud コンソールを使用して、不要になったプライベート・リポジトリーおよび関連するイメージを削除することができます。

リポジトリーを削除すると、そのリポジトリー内のすべてのイメージも削除されます。 このアクションは元に戻すことができません。

始める前に、保持するイメージをすべてバックアップしておく必要があります。

IBM Cloud コンソールを使用してプライベート・リポジトリーを削除するには、以下のステップを実行します。

  1. IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインしてください。

  2. 複数の IBM Cloud アカウントをお持ちの場合は、アカウントメニューから使用するアカウントと地域を選択します。

  3. 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。

  4. 「リポジトリー」 をクリックします。 プライベート・リポジトリーのリストが表示されます。

  5. 削除しようとしているプライベート・リポジトリーを含む行で、チェック・ボックスを選択します。

    この操作は元に戻せないので、正しいリポジトリーを選択したことを確認してください。

  6. 「リポジトリーの削除」 をクリックします。