4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows Server 2019でDockerを動かしてみた

Last updated at Posted at 2021-01-17

今のところ目を覆うひどい状況となっているWindowsコンテナ―。KubernetesがDockerサポートをやめると言ったので、少なくともDockerの目は将来にわたって潰えたかなと思うが、来る(来るのか)Containerdの前に死にゆくWindows Server + Dockerの現状を確認しておくのも、我が新ミニPCの投資回収目的のためには悪くないかと思った。

Dockerのインストール

まあ、手順を丁寧に抑えるのも価値が無いため簡潔に書くと、

1.Windows Server 2019の評価版ディスクを手に入れてVMware Workstationにインストールする。
https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-server-2019?filetype=ISO

CPU2個、メモリ8GB、HDD 60GBで仮想マシンを作ったが、HDD 60GBだとmicrosoft/windowsコンテナのイメージをDocker saveするのにも容量が足りなくて失敗する。マジか。。。まあ、60GBでも十分。

2.Windows ServerにDockerをインストールする。
何かもう内容古そうだし、ところどころ書いてある通りには動かないのだけど以下が公式だろう。
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server

Dockerインストールを終えると、記事作成時点ではMirantis Container Runtimeとかいうどこの馬の骨ともわからないベンダー(まあ、Docker EEをDockerから買収したところだ)のDockerエンジンが動作する。この時点で日本の商用環境で使えるかというところは絶望的である。

> docker version
Client: Mirantis Container Runtime
 Version:           19.03.14
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        e820475
 Built:             12/17/2020 19:30:16
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Mirantis Container Runtime
 Engine:
  Version:          19.03.14
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.13.15
  Git commit:       57e3a05525
  Built:            12/17/2020 19:29:00
  OS/Arch:          windows/amd64
  Experimental:     false

Windows ServerのDockerを使ってみる

1.IISコンテナを動かしてみる。
まず、どのタグのイメージをデプロイすればいいのかを調べるにあたって、最近のWindows Serverのバージョン命名法の妙を知る。
https://hub.docker.com/_/microsoft-windows-servercore-iis

最新のWindows、その名もWindows Server 2009というらしいのだが(2019より10ちいさい)、これは2020年9月にリリースされたWindowsの意であるらしい。重要なのは、これがうまいことに2016とか2019に被らず、次のリリースは2103になるというところだ。これは唸る。次のLTSCリリースでWindows Server 2022とか付けちゃうと2109より古いじゃん?といちゃもんが付くところまで見える。なので多分次のWindows Server LTSCは2022っていう名前じゃないな。Windows Server Xとかだろう。

とはいえいわゆる長期サポート(LTSC)が指定されているのは2019と2016のみであるため、それ以外はその時の気分で出来た不遇の子である。

また、Windows Server 2019(LTSC)の、上記ルールに沿っているっぽいバージョン名とビルド番号は、「システム」>「バージョン情報」によれば以下の通り。
 バージョン: 1809
 OSビルド: 17763.1697

で、結局どのタグでpullすればいいんだよというのがいまいち判然とせずに30分くらい消費するも、結局ページの一番上に書いてある「windowsservercore-ltsc2019」が安全牌だろうという結論に落ち着いた。

> docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019

なので、これを起動する。
いまだ経験したことがない長いイメージ名であり、Microsoftの歴史の重みを物語っている。

> docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019

DockerHubの説明ではWinNATの問題でhttp://localhostではアクセスできないと書いてあるが、Windows Server 2019では解消しているのか、試しにWebブラウザでアクセスしてみると問題なくIISの画面が表示される。
image.png

2.コンテナのファイルを更新してみる
Windowsコンテナにdocker cpって効くのかね、と試してみたら、こちらは特に問題ない。

PS> type index.html
<!DOCTYPE html>
Hello World!
PS> $container = (docker ps -q)
PS> docker cp .\index.html ${container}:"C:\inetpub\wwwroot\"

Webブラウザをリロード。
image.png

docker logsコマンドでIISのログは表示されない。これはそのうち公式イメージ側で何とかして欲しいところ。

おわりに

まあ、結局、リモートデスクトップでつないで管理できるのがWindows Serverの一番良いところであるが、それが解消というか、出来るようになるという気配は今もこれっぽちもない。ていうか、Windows Virtual Desktop掘り下げる方がMicrosoft的にも有意義なのは間違いないし。彼らの方向性は正しい。ゲームストリーミング市場に次世代のITを牽引して欲しい。

Kubernetes界隈でWindowsをノード統合したい人たちってのはほんと、いったい何がしたいんだか。。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?