Google Cloud Platform

Windows コンテナを Compute Engine で動かす

コンテナ型仮想化は急速に進化しているテクノロジーの 1 つで、分散アプリケーションのデプロイと管理を容易にします。人々がコンテナを話題にするとき、大抵は Linux ベース コンテナのことを指していますが、それはもっともなことです。Linux カーネルのネイティブ機能(たとえば cgroups)でリソースの分離という考え方が導入され、それがひいてはコンテナの登場につながったからです。

コンテナ化が可能なのは長らく Linux プロセスだけでしたが、Microsoft が Windows Server 2016 と Windows 10 で Windows ベース コンテナをサポートしました。これにより、既存の Windows アプリケーションを Docker でコンテナ化し、独立したコンテナとして Windows で実行できるようになりました。

Microsoft は Windows Server コンテナと Hyper-V コンテナという 2 種類の Windows コンテナをサポートしています。Windows コンテナは microsoft/windowsservercore または microsoft/nanoserver という基本イメージをベースに構築できます。Windows コンテナの詳細は、Microsoft の Windows コンテナに関するドキュメントをご覧ください。

Windows コンテナを Google Cloud で使用

Google Cloud はコンテナに最適化された VM イメージを提供しています。この VM イメージは、Compute Engine でのコンテナの実行に使用できます。また、コンテナ用の Windows VM イメージも提供しています。この Windows VM イメージには Docker が付属し、基本イメージの microsoft/windowsservercore や microsoft/nanoserver がインストールされています。

Compute Engine で Windows コンテナを実行するには、まず Windows VM が必要です。Cloud Console で Compute Engine セクションに移動し、インスタンスを作成します。起動ディスクの OS イメージとして、必ず Windows Server version 1709 Datacenter Core for Containers(Beta)を選択します。

image009

インスタンスを作成したら、Cloud Console か gcloud で新しい Windows パスワードを作成し、RDP で VM にログインします。VM にログインすると、必要最小限の OS と UI が動作していることがわかります。幸いなことに、Docker と基本イメージはインストール済みです。Windows コンテナの実行に必要なものはこれだけです。

image2eg8w.max-700x700.png

最初の Windows コンテナのために、この例のように “Hello World” を出力する呼び出し可能な PowerShell スクリプトを作成しましょう。

microsoft/nanoserver:1709 イメージがすでにインストールされていますが、このイメージには PowerShell が含まれていません。代わりに、microsoft/nanoserver:1709 イメージをベースとする microsoft/powershell イメージを使用します。

まず、PowerShell イメージをプルして実行します。

  C:\..> docker pull microsoft/powershell:6.0.1-nanoserver-1709
...
C:\..> docker run -it microsoft/powershell:6.0.1-nanoserver-1709

これで PowerShell コンテナに入ります。“Hello World” を出力する PowerShell スクリプトを作成し、コンテナから出ます。

  PS C:\> Add-Content C:\Users\Public\helloworld.ps1 'Write-Host "Hello World"'
PS C:\> exit

今度は、PowerShell スクリプトを含む新しいイメージを、変更されたコンテナを使って作成する必要があります。このコンテナの ID を取得し、docker commit コマンドを使って、その ID で新しいコンテナ イメージを作成します。

  C:\..> docker ps -a
C:\..> docker commit  helloworld

以上で、コンテナ イメージを実行し、コンテナ内の指定したスクリプトを実行できるようになりました。

  C:\..> docker run --rm helloworld pwsh c:\Users\Public\helloworld.ps1
Hello World!

ご覧のとおり、Google Cloud Platform(GCP)で Windows コンテナを実行できています!

以上の手順を試したい方のために、コードラボ(ハンズオン形式で体験できる解説付きのコーディング エクササイズ)が用意されています。

image3rg2h.PNG

試し終わったら、追加の料金がかからないように、必ず VM をシャットダウンするか削除してください。

GCP 上での Windows コンテナWindows の詳細についてはドキュメントをご覧ください。フィードバックやもっと知りたいことがありましたら、コメント欄を使ってお寄せください。


* この投稿は米国時間 4 月 2 日、Developer Advocate の Mete Atamel によって投稿されたもの(投稿はこちら)の抄訳です。

- By Mete Atamel, Developer Advocate