Windows Serverコンテナの作成
Windows Serverのコンテナ作成についてdocker hub調べてみるとMicrosoftからも公式イメージが公開されていますがホストがWindowsでないと使えないようです。Macbookでも使えるイメージとして見つけたdocurr/windowsでコンテナを作成します。
注)以下の手順を行うと英語版Windows Serverがインストールされます。
今回はWindows Server 2022をdocurr/windowsを使用してWindows Serverを作成するようにDockerfileを作成します。
【docker-compose.yml】
services:
web:
container_name: delivery_web
build:
context: .containers/web
dockerfile: Dockerfile
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
environment:
VERSION: "2022"
stop_grace_period: 2m
restart: on-failure
【Dockerfile】
FROM dockurr/windows
できたらコンテナをビルドして起動します。
$ docker-compose -f docker-compose.yml build
$ docker-compose -f docker-compose.yml up -d
ビルドで問題は発生しませんが、コンテナを起動するとエラーになります。
Error response from daemon: error gathering device information while adding custom device "/dev/kvm": no such file or directory
「/dev/kvm」がないということですが「Kernel-based Virtual Machine (KVM) は、物理 Linux マシンにインストールして仮想マシンを作成できるソフトウェア機能」というLinux特有の機能らしくKVMを使用しないようにenvironmentに設定を追加してdevicesの設定を削除します。
environment:
KVM: "N"
コンテナをビルド&起動します。
$ docker-compose -f docker-compose.yml up -d
[+] Running 2/2
✔ Network winsvr2022ora19_default Created 0.0s
✔ Container delivery_web Started 0.0s
今度はコンテナが起動できたので、ブラウザで「https://localhost:8006/」にアクセスするとWindows Serverのインストール状況が確認できます。
インストーラーがダウンロードされ、ダウンロード後にインストールが開始されるのでかなり待ちます。ちなみにM1 Macbookで約40分かかりました。






ログイン状態でデスクトップ画面が表示されたらWindows Serverコンテナの作成は完了します。

最終的な設定は以下の通りです。
【docker-compose.yml】
services:
web:
container_name: delivery_web
build:
context: .containers/web
dockerfile: Dockerfile
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
environment:
KVM: "N"
VERSION: "2022"
stop_grace_period: 2m
restart: on-failure
【Dockerfile】
FROM dockurr/windows
追伸:
Windows ServerにJava、tomcatなどを自動でセットアップする方法は書かない予定です。この構成は結局、使えないのが書かない理由です。