概要
GCPにDockerコンテナをデプロイする方法はいくつかありますが、GCE(compute engine)の機能を使うのが最も簡単です。
コンテナのイメージを指定してインスタンスを作るだけで、dockerのインストールやコンテナの起動は自動で実行されます。
手順
さっそく試してみましょう。gcloudコマンドを使うので、まだインストールされていない人はこちらを参考にどうぞ。
nginxの最新イメージでコンテナをデプロイします。
$ gcloud compute instances create-with-container my-instance --container-image=nginx
my-instance
という名前の仮想マシンが1台起動し、そこにnginxコンテナがデプロイされました。
ここでは、インスタンスサイズなどはデフォルトの設定が使われていますが、細かく指定することも可能です。(参照:gcloud compute instances create-with-container -h
)
また、イメージはDocker HubやGCR(Google Container Registry)のものを指定できます。
確認してみましょう。GCPのファイアウォールの設定でHTTPの受信を許可してから下記を実行します。
curl $(gcloud compute instances describe my-instance --format=json | jq -r .networkInterfaces[].accessConfigs[].natIP)
nginxからのレスポンスが確認できたと思います。
補足など
仮想マシンへのコンテナのデプロイは、GCEでは標準機能として用意されているため、上記のようにコマンド一つで簡単に実行できます。Webコンソールでは、インスタンスの作成画面で「このVMインスタンスにコンテナ イメージをデプロイします」というチェックボックスがあります。
コンテナ実行時のパラメータ(環境変数など)も設定することが可能です。仮想マシンのOSは「Container-Optimized OS」というGCPで提供されているものになります。Ubuntuなどは使えません。コンテナをデプロイしたら、その後新しいバージョンで更新する必要もでてくるかと思いますが、そのときはupdate-container
というコマンドが用意されています。
通常のインスタンスのように、インスタンステンプレートを作成し、それに基づきオートスケーリングの設定をすることも可能です。
注意すべき点としては、コンテナ一つにつき仮想マシン1台が必要になります。GCPのマニュアルには、「一つの仮想マシンに複数のコンテナをデプロイしたい場合は、GKE(kubernetes engine)を検討してね」とありました。
ドキュメント
-
https://cloud.google.com/compute/docs/containers/deploying-containers
- 日本語版ではまだbetaとなっていますが、最近GAになったはず