ローカル(PC)環境のDockerコマンドで、IBMコンテナ・レジストリへログインして、コンテナイメージを取得する方法について、紹介したものです。Docker Hub は、ユーザー認証なしで無償で利用できるDockerコンテナのリポジトリサービスですが、IBMコンテナ・レジストリは、無償から利用でき、脆弱性検査の機能やプライベートに利用できるIBMが運用するサービスです。
この方法の利点は、bx loginをしなくても、トークンを共有すれば dockerコマンドだけで、IBMコンテナ・レジストリからコンテナのイメージをプルする事ができる点です。 もちろん、トークンを追加したり失効させることも可能です。
認証情報の取得
IBM Cloud へログインして、下記のコマンドで、レジストリのアドレスを取得します。 docker login
コマンドで「Container Registry API エンドポイント」を利用するのでメモっておく。
$ bx cr info
Container Registry registry.ng.bluemix.net
Container Registry API エンドポイント https://registry.ng.bluemix.net/api
IBM Cloud API エンドポイント https://api.ng.bluemix.net
<以下省略>
IBMレジストリへアクセスするためのトークンIDのリストする。
$ bx cr token-list
<中略>
トークン ID 読み取り専用 有効期限 説明
182e86d5-91e0-5876-99f9-ff7b1ce6a8b6 true 0 mycluster2
1f01ba7b-2405-5e73-b073-f840e517ee7c false 0 tok02
OK
トークンIDを指定して、トークンの本体を取得する。
$ bx cr token-get 182e86d5-91e0-5876-99f9-ff7b1ce6a8b6
固有 ID が「182e86d5-91e0-5876-99f9-ff7b1ce6a8b6」のレジストリー・トークンを取得中...
トークン ID 182e86d5-91e0-5876-99f9-ff7b1ce6a8b6
トークン eyJhbGciOiJIU<以下省略>
dockerコマンドでログインする
dockerコマンドで、レジストリへログインします。 この時のユーザーIDは、token
で固定です。 トークン形式としているので、パスワードの文字列だけで、ユーザーIDとも紐づく様になっているためです。
$ docker login -u token -p eyJhbGciOiJIU<以下省略> https://registry.ng.bluemix.net/api
トークン形式なので、bx loginをしなくても、トークンを共有すれば dockerコマンドだけで、IBMレジストリからコンテナのイメージをプルする事ができる点がメリットです。 もちろん、トークンを失効させることも可能です。
コンテナ・イメージをローカルへプルする
bxコマンドで、IBMレジストリのイメージをリストして、目的のイメージをリストして、目的のリポジトリ名をメモっておく。
$ bx cr image-list
dockerコマンドで、IBMコンテナ・レジストリのコンテナ・イメージをリポジトリ名を指定して、ローカル環境へプルする。
$ docker pull registry.ng.bluemix.net/takara/webapp1:v1
レジストリのリージョンを変更する
次のコマンで、メニュー形式で変更できる。 変更先を指定したいときは、コマンドの後に、例えばap-south
などのキーワードを指定する。
$ bx cr region-set
領域を選択してください
1. ap-south ('registry.au-syd.bluemix.net')
2. eu-central ('registry.eu-de.bluemix.net')
3. international ('registry.bluemix.net')
4. uk-south ('registry.eu-gb.bluemix.net')
5. us-south ('registry.ng.bluemix.net')
Enter a number ()>
この後に、bx cr login
を使って、レジストリにログインして、bx cr info
でエンドポイントを取得して、あとは同じ操作でアクセスできる。
以上