はじめに
IBM Cloudではライト・アカウントにて制限内であれば無料で利用できるコンテナストレージ(IBM Cloud Container Registry/ICCR)があります。
本記事ではそのレジストリにDockerfileでイメージをアップロードし、そのイメージを利用してコンテナを起動する流れについて記載しました。
環境情報
- Windows 10
- ibmcloud(2.0.0)
名前空間を作成する
ibmcloud login後に以下を行うと利用可能なエンドポイントが表示されます。
$ ibmcloud cr api ... Registry API エンドポイント https://jp.icr.io/api OK
ICCRではレジストリー名を「名前空間」として管理するため、まずは自分専用の名前空間を作成します。
$ ibmcloud cr namespace-add testXX 宛先になっているリソース・グループがありません。 そのため、アカウントのデフォルトのリソース・グループ (「default」) が宛先になります。 レジストリー jp.icr.io のアカウント XXのリソース・グループ「default」に、名前空間「testXX」を追加中... 名前空間「testXX」は正常に追加されました OK
この名前空間はレジストリー内で一意である必要があるため命名によっては以下のようにエラーとなります。
$ ibmcloud cr namespace-add test ... 失敗 要求された名前空間は既にレジストリー「jp.icr.io」で使用中です。別の名前空間を選択してください。
Dockerfileを利用してイメージを生成/アップロード
Dockerfileがカレントディレクトリにある状態で以下のようにbuildコマンドを押下すると
$ ibmcloud cr build -t jp.icr.io/testXX/sampleapp:1.0 .
ビルド処理及びPush処理が行われます。
Sending build context to Docker daemon 5.12kB ... Successfully built ac83421156e2 Successfully tagged private.jp.icr.io/testXX/sampleapp:1.0 The push refers to repository [private.jp.icr.io/testXX/sampleapp] ... OK
ちなみにこれは内部のDockerEngineを利用していないのか以下のようにローカルでは通らなくても利用できました。
$ docker build -t test . error during connect: This error may indicate that the docker daemon is not running....
最後にデプロイですがイメージ名に今回の「private.jp.icr.io/testXX/sampleapp:1.0」を指定すれば問題なく利用できます。
終わりに
ICCRを利用すれば、個人用に利用しているイメージをコマンド一発でアップロードすることが可能です。また、docker tagでICCRのタグをつければdocker pushでローカルにあるイメージを配置可能です。
ちなみに以下コマンドでイメージ一覧が取得できますが、イメージに含まれる脆弱性に関しては同クラウドツールのSysdigSecureのように自動的に判定されます。
$ ibmcloud cr images イメージをリストしています... リポジトリー タグ ダイジェスト 名前空間 作成日 サイズ セキュリティー状況 jp.icr.io/testXX/sampleapp 1.0 867edc9fb394 testxx xxminutes ago 49 MB 問題なし
以上です。