Docker for Windows で Windows コンテナを動かす

経緯

普段 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...」をクリック
タスクトレイから Docker for Windows のアイコンを右クリックして、コテキストメニューから「Switch to 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 用の Docker 環境について

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。