Docker で Windows コンテナのプロセス分離を使って世界に挨拶してみた

はじめに

October 2018 Update から、 Windows 10 Professional 以上で、 開発・テスト用に Windows コンテナが使えるようになっていた。 どうやって使えばいいのか調べたら Docker から使うのか。 独自のインタフェースを提供するより、既にデファクトスタンダードに乗っかる選択をしたのは賢明だな。

Docker のインストール

Docker Desktop for Windows は下記の URL でインストーラーを入手してインストール。

https://hub.docker.com/editions/community/docker-ce-desktop-windows

Docker のトレイメニューで [Switch to Windows containers...] をクリックして、Docker が使うコンテナの種類を Windows コンテナに切り替えられた。

コンテナイメージのダウンロード

早速、Windows Server のコンテナイメージをダウンロードしてみた。

> docker pull mcr.microsoft.com/windows/nanoserver:1809

f:id:griefworker:20190619110102p:plain

ちゃんとダウンロードできたことを確認。

> docker images

f:id:griefworker:20190619110206p:plain

プロセス分離モードでコンテナ起動

プロセス分離モードで実行するには、--isolation process の指定が必要。 「Hello World!」をテキストファイルに出力してコンテナを終了するところまでやってみた。

> docker run -it --isolation process mcr.microsoft.com/windows/nanoserver:1809 cmd.exe
> echo "Hello World!" > Hello.txt
> exit

f:id:griefworker:20190619110233p:plain

コンテナが停止されていることを確認。

> docker ps -a

f:id:griefworker:20190619110300p:plain

ステータスが Exited になっている。

新しいコンテナイメージを作成

変更したコンテナから新しいコンテナイメージを作成してみた。

> docker commit <コンテナID> helloworld

f:id:griefworker:20190619110326p:plain

コンテナイメージに helloworld が追加されていることを確認しておく。

> docker images

f:id:griefworker:20190619110336p:plain

作成したコンテナイメージを使ってコンテナを起動

helloworld コンテナイメージを使って、コンテナを起動してみた。 もちろんプロセス分離モードで。 今回は、テキストファイルの中身を表示したら即コンテナを停止させている。

> docker run --rm --isolation process helloworld cmd.exe /s /c type Hello.txt

f:id:griefworker:20190619110345p:plain

おわりに

--isolation process を指定するだけで、Docker から Windows コンテナをプロセス分離モードで起動できるのは、 Docker 頑張ったなという印象。 いや、頑張ったのはMicrosoft か?

Docker で使うコンテナは Linux コンテナが多いと思うけど、 本業で開発しているアプリは Windows の資産がほとんどなので、 しばらくは Windows コンテナと仲良くすることになりそうだ。