Docker for Windows 1.12.2 Beta26以降の話です。
Stable Channelにはまだ入っていないと思われます。(未確認)
本エントリでは1.12.2 Beta28で動作確認をしています。
Docker for Windowsとdockerd.exeについて
でも触れた様にこれまでのDocker for WindowsはHyper-V上にLinux仮想マシン(Alpine Linux)を立て、その仮想マシン上にあるDocker Engine(Windowsから見えるサービスとしてはcom.docker.service
など)がLinuxイメージを扱うものでした。
Windowsイメージを扱うには別途dockerd.exe
をダウンロードしてインストールする必要がありました。
Docker for Windowsに同梱されたdockerd.exe
Docker for Windows 1.12.2 Beta26からdockerd.exe
が同梱され、タスクバーのアイコンから使用するDocker Engineを切り替えることができる様になりました。
dockerd.exe
のインストール先はC:\Program Files\Docker\Docker\resources
になり、現時点ではCS版の1.12.2-cs2-ws-betaがインストールされていました。
これはWindows Server 2016にインストール可能なものと同じですが、Windows Serverと同様にサポート対象になるのかは不明です。(多分サポート対象外な気がします...)
試してみる
というわけで、Docker Engineの切り替えを試してみます。
Docker for Windowsのインストール手順はインストーラーの指示に従うだけなので省略します。
インストール直後の状態ではdockerd.exe
は起動しておらずLinuxイメージを扱う状態となっています。
docker version
の結果は以下の様になっています。
画面右下のタスクバーのアイコンを右クリックすると「Switch to Windows Containers...」というメニューが増えているのでこれを選択するとDocker Engineの切り替えをすることができます。
切り替え中は以下の様に通知されます。
ここで過去に古いdockerd.exe
をインストールしている場合は警告が表示されサービスのアンインストールを指示されます。
このメッセージが出た場合はその内容に従いサービスをアンインストールしましょう。
# 要管理者権限 dockerd --unregister-service
また、初回切り替え時に時間がかかることがあるそうです。
私は以前から古いdockerd.exe
を使っていたためか初回切り替え時も割とすぐに切り替えできましたが、もし時間がかかる場合はしばらく待つのが良いでしょう。
切り替えが終わるとWindowsイメージを扱うことができる様になります。
docker version
の結果は以下。
あとは普通にdocker
コマンドでいろいろすることができます。
ちなみに、この状態でProcess Explorerを使ってプロセスを見てみると以下の様になっており、com.docker.service
の子プロセスとしてdockerd.exe
が起動されていることがわかります。
サービスとしてはcom.docker.service
一つで管理しており、これまでの様にdockerd.exe
をサービス登録する必要はありません。
元に戻す
Linuxイメージを扱う様に戻すには、タスクバーのアイコンを右クリックすると、メニューが「Switch to Linux Containers...」に変わっているのでこれを選択すればOKです。
これで元に戻ります。
なお、一度起動したdockerd.exe
はDocker for Windows自体を終了するまで残り続ける様です。
最後に
とりあえずこんな感じです。
クリック一つでDocker Engineの切り替えができるのは非常に楽なので早くStable Channelに来てほしいですね。