経緯
普段 Linux OS を Docker で動かしていますが、ふと Windows は動かせるのか、と思い立って調べてみました。
幸い、開発環境は Windows で Docker for Windows を動かしているので、やるならば比較的構築しやすそうです。
調査
調べてみるとコンテナがありそうです。
Docker for Windows で WSL2 は有効化しておらず、 Hyper-V 使用で動かしているのでその点はまずクリア。
> Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All
Path :
Online : True
RestartNeeded : False
続いてサービスの起動ですが、 Hyper-V も Windows Containers も起動済みだったので再起動も必要なし。
後は使用のため、タスクトレイから Docker for Windows のアイコンを右クリックして、コテキストメニューから「Switch to Windows Containers…」をクリックしてモードを切り替えます。
その上で管理者実行した PowerShell で作業ディレクトリに移動し、以下のようにコマンドを実行しました。
> docker run mcr.microsoft.com/windows:ltsc2019
Unable to find image 'mcr.microsoft.com/windows:ltsc2019' locally
ltsc2019: Pulling from windows
XXXXXXXXXXXX: Pull complete
YYYYYYYYYYYY: Pull complete
Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for mcr.microsoft.com/windows:ltsc2019
Microsoft Windows [Version 10.0.17763.4737]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>
PS >
適当なところでディレクトリを切ってイメージをプル・起動してみました。3GB越えの容量のダウンロードなのでそこそこ時間はかかったものの起動。ただ、起動だけの命令なので即座にexitしましたね……。
> docker run -v PATH\TO\Hellotxt:C:\work mcr.microsoft.com/windows:ltsc2019 cmd.exe /s /c type C:\work\Hello.txt
Hello, world!
PS PATH\TO\Hellotxt >
続いて作業ディレクトリに Hello, world!
という内容を記述した Hello.txt
ファイルを用意して、コマンドプロンプトでその内容を出力させるという Docker でやってみる Windows container | スクエニ ITエンジニア ブログ の記事の内容を実行。
こちらも Hello, world!
というテキストファイルの中身が出力されたので、正常に動作していることは分かりました。
一応、コマンドプロンプトが実行できることは分かったので何か Windows 独自の処理をさせたいときは使えるかも……?とはいえ、見慣れているデスクトップ画面が表示されるわけではないですし、コマンド実行後はコンテナをexitしてしまうのでどう使おうか……というところでしょうか。
参考
- Windows コンテナーの基本イメージ | Microsoft Learn
- Docker でやってみる Windows container | スクエニ ITエンジニア ブログ
- Dockerを使ったWindowsコンテナを動かす方法から実行まで解説! | アンドエンジニア