1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CFアプリ開発と管理#4 Dockerでアプリをデプロイする

Last updated at Posted at 2017-08-07

このトピックでは、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イメージの場所。
    • レジストリ:

    • これらのポート番号が一致すること:

      • コンテナが公開するために、画像のDockerfileで設定されたEXPOSEポート。
      • アプリケーションがリッスンするように設定されたPORT環境変数。 アプリで PORT が指定されていない場合、Cloud Foundryではデフォルトで8080に設定されます。

コメント: 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などを利用する場合、インターネット回しとなるために、通信料が発生します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?