このトピックでは、Cloud Foundryコマンドラインインターフェイス(CLI)を使用して、新しいDockerイメージまたは更新されたDockerイメージでアプリケーションをプッシュする方法について説明します。 Cloud Foundryは、Dockerイメージを使用してアプリのコンテナを作成します。Cloud FoundryでのDockerの動作については、Cloud FoundryでのDockerの使用に関するトピックを参照してください。
注意事項:この記事は、Cloud Foundry Documentaion Deploy an App with Docker(last updated: July 20, 2017)からの独自の翻訳とコメントです。内容を保証するものではありません。
コメント:IBM Blumemix には、IBM Container Support の機能があり、Docker イメージのデプロイを実施することができます。しかし、本文書は、IBMの提供する拡張機能ではなく、Cloud Foundry Diego の標準機能についての記述です。
要件
Dockerでアプリをpushするには、次のものが必要です。
- Dockerサポートが有効になっているCloud Foundry(CF)デプロイメント。
- Dockerハブまたは別のDockerレジストリ上のDockerイメージの場所。
-
レジストリ:
- Docker Registry HTTP API V2をサポートします。
- HTTPSトラフィックの有効な証明書を提示します。
-
これらのポート番号が一致すること:
-
コメント: IBM Bluemix では Dockerサポート機能が有効になっていました。【Qiita】Bluemix で Cloud Foundry Docker Support を使ってみたを参照してください。
Docker Hub 上の DockerイメージをPushする
Docker Hubリポジトリからコンテナ・イメージを展開するには、次のコマンドを実行します。
$ cf push APP-NAME --docker-image REPO/IMAGE:TAG
上記のコマンドで次の値を置き換えます。
- APP-NAME:プッシュされているアプリの名前
- REPO:イメージが格納されているリポジトリの名前
- IMAGE:Docker Hubのコンテナ・イメージの名前
- TAG:コンテナ・イメージのタグまたはバージョン(オプション)
たとえば、次のコマンドはDocker Hubのmy-imageイメージをCloud Foundryアプリケーションにプッシュします。
$ cf push my-app --docker-image cloudfoundry/my-image
プライベート・レジストリからDockerイメージをpushする
Docker Hubの代わりに、会社内部のDockerレジストリなど、正式な証明書を持つHTTPSのDockerイメージ・レジストリを使用できます。
指定したDockerレジストリを使用してDockerイメージを展開するには、次のコマンドを実行します。
$ cf push APP-NAME --docker-image MY-PRIVATE-REGISTRY.DOMAIN:PORT/REPO/IMAGE:TAG
上記のコマンドの値を次のように置き換えます。
- APP-NAME:プッシュされるアプリの名前
- MY-PRIVATE-REGISTRY.DOMAIN:Dockerレジストリへのパス
- PORT:レジストリがトラフィックを処理するポート
- REPO:イメージが格納されているリポジトリの名前
- IMAGE:プッシュされているコンテナ・イメージの名前
- TAG:コンテナ・イメージのタグまたはバージョン(オプション)
例えば:
$ cf push my-app --docker-image internal-registry.example.com:5000/my-repo/my-image:v2
認証付きのレジストリからDockerイメージをpushする
多くのDockerレジストリは、ユーザー名とパスワードで認証してDockerイメージへのアクセスを制御します。 レジストリ認証を使用してDockerイメージを展開するには:
CF_DOCKER_PASSWORD環境変数をDockerレジストリユーザのパスワードに設定した状態で、cf pushを--docker-imageと--docker-usernameで実行します。
$ CF_DOCKER_PASSWORD=YOUR-PASSWORD cf push APP-NAME --docker-image REPO/IMAGE:TAG --docker-username USER
上記のコマンドの値を次のように置き換えます。
- YOUR-PASSWORD: レジストリとの認証に使用するパスワード
- APP-NAME:プッシュされているアプリの名前
- REPO:イメージが格納されているリポジトリ:
Docker Hubでは、これは単にリポジトリ名です
プライベートレジストリの場合、これには、プライベートレジストリからのドッカー画像のプッシュで説明されているように、レジストリアドレスとポートが含まれます。MY-PRIVATE-REGISTRY.DOMAIN:PORT / REPO - IMAGE:プッシュされているコンテナ・イメージの名前
- TAG:コンテナ・イメージのタグまたはバージョン(オプション)
- USER:レジストリとの認証に使用するユーザー名
DockerのVolumeサポート
DiegoはDockerボリュームをサポートしています。 ボリュームサポートを有効にする方法の詳細については、「外部ファイルシステムの使用(ボリュームサービス)」を参照してください。 NFSボリュームの制限事項については、「NFS Bosh Volume Release」を参照してください。
コメント: IBM Bluemix では PaaSとしてファイルシステムサービスが提供されていません。 Bluemix Infrastructure の ファイルシステムサービス Endurance Storageなどを利用する場合、インターネット回しとなるために、通信料が発生します。