(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【IBMCloud】Dockerfileで作成したイメージをICCRにアップロードする手順

スポンサーリンク

はじめに

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    問題なし

以上です。