GCP(GCE) + Container-Optimized OSで軽量でセキュアなDocker環境を構築する

VPS以上のタスタマイズができるクラウドサーバー・Google Cloud Platform(GCP)。GCPでは、dockerを使う様々な機能が備わっていますが、今回はベーシックに仮想サーバー・Google Compute Engine(GCE)で、GoogleがGCE用に用意している「Container-Optimized OS」を使って、軽量でセキュアなDocker環境を構築します。

Container-Optimized OSって何?

Container-Optimized OSは、Googleが用意しているGCE専用のOSです。Dockerを快適に稼働させることを目標に開発されています。

Container-Optimized OS は、Docker コンテナの実行に最適化された Compute Engine VM のオペレーティング システム イメージです。コンテナ最適化 OS を使用すると、Docker コンテナを Google Cloud Platform ですばやく、効率的に、安全に使用できます。
Container-Optimized OS from Google のドキュメント

Container-Optimized OSには下記のメリット・デメリットがあります。

Container-Optimized OSのメリット

  • 軽量
  • セキュリティが高い(デフォルトでは22番ポート以外は遮断)
  • 必要最低限の機能しかないので、攻撃される範囲が狭い

Container-Optimized OSのデメリット

  • GCE以外で使えない
  • 環境が特殊なので、Cent OSやUbuntuと少し勝手が違う

Dockerコマンドが使えばOKという場合は、Docker環境を構築のにContainer-Optimized OSは最適なOSと言えますね。

VMを作成する

まずは、GCEで仮想マシンを作成します。

今回は、Googleで作成したGCE用のコンテナイメージ「Container-Optimized OS」を使うので、ディスクイメージで「Container-Optimized OS」を選択します。
dev、beta、stableの3種類がありますが、今回はstableを利用します。

マシンタイプや、ディスク容量などは自由に設定してください。

WEBサーバーとして使う場合は、GCPのコンソール画面からVMを編集して、「ファイアウォール」パートの「HTTP トラフィックを許可する」「HTTPS トラフィックを許可する」にチェックを入れてください。

作成したVMにSSHログインする

VMが起動すれば、すでにdocker runコマンドでdockerコンテナが起動できるようになっています。

試しにVMにSSHしてdockerコマンドを実行してみてください。

docker run hello-world

-------
Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (Assuming it was not already locally available.)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
-----
//上のコメントが出て来れば成功です。

GCEでは、ローカルにGoogle Cloud SDKをインストールすることでローカルコンソールをインストールしてgcloudコマンドからVMにSSHログインもできます。また、bashが使えるコンソールがない場合でも、GCPにて提供されているブラウザコンソールを利用できます。

(おまけ)Container-Optimized OS用のdocker-composeをインストールする

Container-Optimized OSにはデフォルトでdocker-composeがインストールされていないので、docker-composeをインストールします。(docker-composeを使わずに、docker runでコンテナを起動させる場合は必要ありません)

[Unixbench] Google Compute Engine f1-micro

これで、基本的なDocker環境が構築できました。

軽量OSなので、GCPの無料枠(Always Free)で使えるf1-microサーバーでも簡単なブログくらいは運営できます。

ぜひ、いろんな使い方にトライしてみてください。