Google Cloud Platform

Container-Optimized OS を正式リリース

イノベーションが急速に進展している分野はいくつかありますが、その 1 つがコンテナ技術であることは、IT に携わる人にとって周知の事実でしょう。私たち Google はこの流れをエキサイティングに感じており、Google Cloud Platform(GCP)がコンテナの優れた実行環境になるように、GCP の改良を続けています。

コンテナのホスト OS には良いものが数多く出回っており、私たちはお客様の選択肢がたくさんあることを歓迎していますが、その一方で多くの方からこんな声も寄せられています。「Google サービスに適用されているすべての最適化の恩恵を受けられるように、独自の VM を立ち上げる場合も含めて、Google が使っているのと同じイメージを使いたい」

こうした声を踏まえ、私たちは 2016 年春に、GCP でのコンテナの実行に最適化された Container-Optimized OS(旧称 : Container-VM Image)のベータ版をリリースしました。私たちは GCP で正式に提供しているサービスの一部(Google Cloud SQLGoogle Container Engine など)を Container-Optimized OS で運用しています。

そしてこのほど、Container-Optimized OS を GA(正式公開)リリースしました。これによって Compute Engine のお客様は、Container-Optimized OS で VM インスタンスを作成すれば、直ちに Docker コンテナを実行できるようになりました(この記事の後半に示した例をご覧ください)。

Container-Optimized OS は、以下のように、私たちがこの 10 年にわたってコンテナを大規模に運用する中で培ってきたベスト プラクティスを体現しています。

  • コントロールされたビルド / テスト / リリース サイクル : Container-Optimized OS の重要なメリットは、Google 側がビルド、テスト、リリース サイクルをコントロールし、改良されたカーネル機能や管理されたアップデートを GCP のお客様(Google 自身のサービスを含む)に提供することにあります。リリースは 3 つのチャネル(dev、beta、stable)で提供され、各チャネルのリリースはそれぞれ開発段階と安定性が異なります。これにより、迅速なイテレーションと短いリリース サイクルが可能になっています。
  • コンテナ対応 : Container-Optimized OS は、Docker コンテナ ランタイムがプリインストールされており、コンテナの大規模なデプロイと管理(オーケストレーションとも呼ばれます)のために Kubernetes をサポートしています。
  • 安全設計 : Container-Optimized OS はセキュリティを考慮して設計されました。極小サイズで読み取り専用のルート ファイル システムは、攻撃の余地を狭めており、ファイル システムの整合性チェック機能も備えています。ロックダウンされたファイアウォールおよび監査ロギング機能も用意されています。
  • トランザクション型の更新 : Container-Optimized OS は、アクティブ / パッシブ ルート パーティション スキームを採用しています。これにより、この OS イメージの更新はカーネルを含めて全体をアトミックなトランザクションとして行えるため、更新の失敗率が大幅に低下します。自動更新についてはユーザー側で選択可能です。
Container-Optimized OS が動作する VM インスタンスを Compute Engine で作成するのは簡単です。Google Cloud Console の GUI を使うか、gcloud コマンドライン ツールで次のように入力します。

  gcloud compute instances create my-cos-instance \
    --image-family cos-stable \
    --image-project cos-cloud

インスタンスが作成されたら、すぐにコンテナを実行できます。たとえば次のコマンドにより、作成したばかりのインスタンスで Nginx コンテナが実行されます。

  gcloud compute ssh my-cos-instance -- "sudo docker run -p 80:80 nginx"

次のようにコマンドを入力すれば、インスタンスにログインすることもできます。

  gcloud compute ssh my_cos_instance --project my_project --zone us-east1-d

シンプルな例をもう 1 つ示しましょう。今度は Container Engine(OS として Container-Optimized OS を使用)を使ってコンテナを実行します。Container Engine のクイックスタート ページから引用したものです。

  gcloud container clusters create example-cluster
kubectl run hello-node --image=gcr.io/google-samples/node-hello:1.0 \
   --port=8080
kubectl expose deployment hello-node --type="LoadBalancer"
kubectl get service hello-node
curl 104.196.176.115:8080

ぜひ独自の Container-Optimized OS インスタンスをセットアップして、コンテナを実行してみてください。Container-Optimized OS のドキュメントはこちらでご覧になれます。ソースコードは Chromium OS リポジトリで公開されています。

Container-Optimized OS へのご質問やご要望がありましたら、ぜひお寄せください。その際は、StackOverflow で google-container-os タグをお使いください。

* この投稿は米国時間 4 月 4 日、Software Engineer である Saied Kazemi によって投稿されたもの(投稿はこちら)の抄訳です。

- By Saied Kazemi, Software Engineer