アクセス Container Registry
IBM Cloud® Container Registry の名前空間にアクセスして、イメージのプッシュおよびプルを実行できるようにするには、IBM Cloud® Identity and Access Management (IAM) を使用します。
すべてのアカウントにはIAMアクセスポリシーが必要です。 IAM アクセス・ポリシーをセットアップして管理するには、IAM アクセス・ポリシーの定義を参照してください。
IBM Cloud Container Registry へのアクセスは、API キーを使用することの多い自動型か bearer トークンを使用することの多い対話型のいずれかになります。
IAM アクセス・ポリシーがあるにもかかわらず、 Access denied
エラーが発生する場合は、 「Access denied
エラーが発生する理由 」を参照してください。
Kubernetes デプロイメントでコンテナー・イメージを使用する場合は、イメージ・プル・シークレットを使用して、デフォルト以外の Kubernetes 名前空間から他の IBM Cloud アカウントまたは外部プライベート・レジストリー内のイメージにアクセスを参照してください。
自動化による名前空間へのアクセス
サービス ID API キーを使用して、名前空間との間で行うコンテナー・イメージのプッシュとプルを自動化できます。
APIキーはAPIリクエストの認証と承認に使用される固有のコード。 このコードは、呼び出し元のアプリケーションまたはユーザーを識別し、APIの使用状況を追跡・管理するためにAPIに渡されます。アカウント内のユーザーIDまたはサービスIDにリンクされており、 IBM Cloud®。 API キーは、CLI の中で、あるいは自動化の一環として、ユーザーやサービスの ID として認証に使用できます。 ユーザー API キー は、ユーザーとそのアクセス・ポリシーに関連付けられています。 サービス ID API キー には、独自のアクセス・ポリシーがあります。 オートメーションが特定の限定された能力を付与されるように、異なるきめ細かなポリシーを持つ複数のサービスIDを持つことができる。
IBM Cloud Kubernetes Service クラスターまたは Red Hat® OpenShift® on IBM Cloud® クラスターを作成すると、クラスターとともに IBM Cloud IAM サービス ID が作成されます。このサービス ID には、IBM Cloud Container Registry に対する IAM リーダー・サービス・アクセス・ポリシーが付与されています。 サービス ID 資格情報は、クラスター内のイメージ・プル・シークレットに保管されている無期限のサービス
ID API キーで認証されます。 イメージ・プル・シークレットは default
Kubernetes 名前空間に追加され、この Kubernetes 名前空間の default
サービス・アカウント内のシークレットのリストにも追加されます。 さらに多くのサービス ID API キーを必要とする場合や、サービス ID API キーが欠落している場合には、サービス ID API キーを手動で作成することができます。
サービス ID API キーは以下の場所で使用できます。
- IBM Cloud Kubernetes Service クラスターまたは Red Hat OpenShift on IBM Cloud クラスター。 IBM Cloud Kubernetes Service クラスターおよび Red Hat OpenShift on IBM Cloud クラスターを作成すると、クラスターごとに 1 つのサービス ID が自動的に作成されます。 複数のサービス ID を必要とする場合には、手動で作成できます。
- IBM Cloud 上にはない Kubernetes および Red Hat® OpenShift®クラスター。 独自のサービス ID、API キー、およびプル・シークレットを作成する必要があります。
- Docker CLI および他のクライアント。 独自のサービス ID および API キーを作成する必要があります。
手動でサービス ID API キーを作成する
レジストリーへのログインに使用できるサービス ID API キーを作成します。
サービス ID API キーを作成するには、以下の手順を実行します。
-
サービス ID を作成します。
ibmcloud iam service-id-create
を参照してください。 -
サービス・ポリシーをサービス ID に割り当て、IBM Cloud Container Registry の認証にサービス ID が使用されるときに許可されるアクセス権限レベルを制御します。リソースへのアクセス管理を参照してください。
-
サービス ID API キーを作成します。サービス ID API キーの管理および
ibmcloud iam service-api-key-create
を参照してください。
手動でユーザー API キーを作成する
レジストリーにログインするために使用できるユーザー API キーを作成します。
ユーザー API キーを作成する場合、ユーザーのアクセス・ポリシーが使用されます。
ユーザー API キーを作成するには、ユーザー API キーの管理および ibmcloud iam api-key-create
を参照してください。
クライアント・ソフトウェアを使用した自動化の認証
共通クライアントを使用してレジストリーにログインするには、API キーを使用します。
クライアントには API キーとドメインが必要です。API_KEY
を API キーに置き換え、REGISTRY_DOMAIN
を名前空間がセットアップされているレジストリーのドメインに置き換えます。
リージョン | 以前は | REGISTRY_DOMAIN |
---|---|---|
global |
適用外 | icr.io |
au-syd |
ap-south |
au.icr.io |
br-sao |
適用外 | br.icr.io |
ca-tor |
適用外 | ca.icr.io |
eu-de |
eu-central |
de.icr.io |
eu-es |
適用外 | es.icr.io |
eu-gb |
uk-south |
uk.icr.io |
jp-osa |
適用外 | jp2.icr.io |
jp-tok |
ap-north |
jp.icr.io |
us-south |
適用外 | us.icr.io |
Continuous Delivery パイプラインで IBM Cloud Container Registry を使用する方法について詳しくは、プライベート・イメージ・レジストリーの使用を参照してください。
レジストリーを使用して自動的に認証する方法が、以下のクライアントを例として示されています。
Buildah を使用したレジストリーでの認証
Buildah を使用してレジストリーを認証すると、レジストリーと相互にイメージをプッシュおよびプルできます。
以下の Buildah コマンドを実行し、API キーとドメインを使用してレジストリーにログインします。API_KEY
を API キーに、REGISTRY_DOMAIN
をドメインに置き換えます。
buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Docker を使用したレジストリーでの認証
Docker を使用してレジストリーでの認証を行い、レジストリーとの間でイメージをプッシュおよびプルできるようにします。
以下の Docker コマンドを実行し、API キーとドメインを使用してレジストリーにログインします。API_KEY
を API キーに、REGISTRY_DOMAIN
をドメインに置き換えます。
docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Podman を使用したレジストリーでの認証
Podman を使用してレジストリーを認証すると、レジストリーと相互にイメージをプッシュおよびプルできます。
以下の Podman コマンドを実行し、API キーとドメインを使用してレジストリーにログインします。API_KEY
を API キーに、REGISTRY_DOMAIN
をドメインに置き換えます。
podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN
Skopeo を使用したレジストリーでの認証
Skopeo を使用してレジストリーを認証すると、レジストリーと相互にイメージをプッシュおよびプルできます。
例えば、以下の Skopeo コマンドを使用して、Docker Hub からイメージをプルし、そのイメージを名前空間にプッシュできます。 REGISTRY_DOMAIN
をご使用のドメインの名前に、NAMESPACE
を名前空間に、API_KEY
を API キーにそれぞれ置き換えます。
skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY
対話式に名前空間にアクセスする
bearer トークンおよびリフレッシュ・トークンを使用すると、名前空間と相互にイメージを対話式でプッシュおよびプルできます。
名前空間に対話式でアクセスする方法が、以下のクライアントを例として示されています。
Buildah を使用した名前空間へのアクセス
Buildah CLI を使用して、レジストリーにログインします。
Builddah CLI を使用すると、ベアラー・トークンを使用してレジストリーにログインできます。REGISTRY_DOMAIN
をドメインに置き換えます。
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN
Docker を使用した名前空間へのアクセス
Docker CLI を使用して、レジストリーにログインします。
Docker CLI を使用すると、IBM Cloud CLIのリフレッシュ・トークンでレジストリーにログインできます。
ibmcloud cr login --client docker
Docker CLI を使用すると、bearer トークンでレジストリーにログインできます。
-
ibmcloud iam oauth-tokens
を使用してベアラー・トークンを生成します。 -
docker login
コマンドを使用してレジストリーにログインします。BEARER_TOKEN
をベアラー・トークンに、REGISTRY_DOMAIN
をドメインに置き換えます。docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
Podman を使用した名前空間へのアクセス
レジストリにログインし、CLIを使ってイメージを取り出します。 IMAGE_NAME
はイメージの名前です。
ibmcloud cr login --client podman
podman pull IMAGE_NAME
Skopeo を使用した名前空間へのアクセス
Skopeo CLIを使用して、レジストリーにログインします。
Skopeo CLI を使用すると、ベアラー・トークンを使用してレジストリーにログインできます。REGISTRY_DOMAIN
をドメインに置き換えます。
ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN
名前空間にプログラムでアクセス
独自のコードを使用して、IBM Cloud Container Registry の名前空間にアクセスします。
ほとんどのユーザーは ibmcloud cr login
コマンドを使用して docker login
を単純化できますが、自動化を実装している場合や別のクライアントを使用している場合は、手動で認証することを推奨します。 ユーザー名とパスワードを提示する必要があります。 IBM Cloud
Container Registry では、ユーザー名はパスワードに表示されるシークレットのタイプを示します。
次のユーザー名が有効です。
iambearer
: パスワードには IAM アクセス・トークンが含まれています。 このタイプの認証は、存続時間は短いですが、あらゆるタイプの IAM ID から利用できます。 例えば、ibmcloud iam oauth-tokens
から利用できます。iamrefresh
パスワードには、IAM アクセス・トークンを生成するためにレジストリーによって内部的に使用される IAM リフレッシュ・トークンが含まれています。 このタイプの認証は、存続時間が長く、ibmcloud cr login
コマンドで使用されます。iamapikey
パスワードは、IAM アクセス・トークンを生成するためにレジストリーによって内部的に使用される IAM API キーです。 このタイプの認証は、自動化に推奨されるタイプです。 ユーザー API キーまたはサービス ID API キーを使用できます。 詳細については、自動化による名前空間へのアクセスを参照してください。