事象
レジストリーサービスにpushする際に以下のエラーとなる。
$ docker push jp.icr.io/xx/hello-world:latest The push refers to repository [jp.icr.io/xx/hello-world] 9c27e219663c: Preparing unauthorized: The login credentials are not valid, or your IBM Cloud account is not active.
環境情報
$ ibmcloud --version ...version 1.3.0:...
$ docker --version Docker version 20.10....
原因/対応策
Container Registryへのログインに失敗している。
以下のコマンドが通れば
$ ibmcloud cr login 「jp.icr.io」にログインしています... 「jp.icr.io」にログインしました。 OK
pushコマンドが通り
$ docker push jp.icr.io/xx/hello-world:latest The push refers to repository [jp.icr.io/xx/hello-world] 9c27e219663c: Pushed latest: digest: sha256:90xx size: 525
イメージリストの一覧に記載が確認できる。
$ ibmcloud cr image-list イメージをリストしています... リポジトリー タグ ダイジェスト 名前空間 作成日 サイズ セキュリティー状況 jp.icr.io/xx/hello-world latest 90659bf80b44 xx 1 year ago 2.5 kB サポート対象外 OS OK
以下、補足です。
補足
事前に以下のように個別の名前空間を作成しておけば同名前空間にイメージが保管できます。
$ ibmcloud cr namespace-add xx 宛先になっているリソース・グループがありません。 そのため、アカウントのデフォルトのリソース・グループ (「default」) が 宛先になります。 レジストリー jp.icr.io のアカウント 日本IBM 用のリソース・グループ「default」に、名前空間「xx」を追加中... 名前空間「xx」は正常に追加されました OK
ちなみに名前空間は一意のものを選定しないと以下のようにエラーとなります。
$ ibmcloud cr namespace-add test ... 失敗 要求された名前空間は既にレジストリー「jp.icr.io」で使用中です。 別の名前空間を選択してください。
同作業が完了すればpush可能ですが、ibmcloud loginとは別にibmcloud cr loginを実施しないと冒頭に記載したエラーとなります。
以上、ご参考になれば幸いです。