しばたテックブログ

気分で書いている技術ブログです。

Docker for Windowsにdockerd.exeが同梱された話

Docker for Windows 1.12.2 Beta26以降の話です。
Stable Channelにはまだ入っていないと思われます。(未確認)

本エントリでは1.12.2 Beta28で動作確認をしています。

Docker for Windowsとdockerd.exeについて

stknohg.hatenablog.jp

でも触れた様にこれまでの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の結果は以下の様になっています。

f:id:stknohg:20161018032143p:plain

画面右下のタスクバーのアイコンを右クリックすると「Switch to Windows Containers...」というメニューが増えているのでこれを選択するとDocker Engineの切り替えをすることができます。

f:id:stknohg:20161018032021p:plain

切り替え中は以下の様に通知されます。

f:id:stknohg:20161018032314p:plain

ここで過去に古いdockerd.exeをインストールしている場合は警告が表示されサービスのアンインストールを指示されます。

f:id:stknohg:20161018032433p:plain

このメッセージが出た場合はその内容に従いサービスをアンインストールしましょう。

# 要管理者権限
dockerd --unregister-service

また、初回切り替え時に時間がかかることがあるそうです。
私は以前から古いdockerd.exeを使っていたためか初回切り替え時も割とすぐに切り替えできましたが、もし時間がかかる場合はしばらく待つのが良いでしょう。

切り替えが終わるとWindowsイメージを扱うことができる様になります。
docker versionの結果は以下。

f:id:stknohg:20161018032822p:plain

あとは普通にdockerコマンドでいろいろすることができます。

ちなみに、この状態でProcess Explorerを使ってプロセスを見てみると以下の様になっており、com.docker.serviceの子プロセスとしてdockerd.exeが起動されていることがわかります。

f:id:stknohg:20161018032946p:plain

サービスとしてはcom.docker.service一つで管理しており、これまでの様にdockerd.exeをサービス登録する必要はありません。

元に戻す

Linuxイメージを扱う様に戻すには、タスクバーのアイコンを右クリックすると、メニューが「Switch to Linux Containers...」に変わっているのでこれを選択すればOKです。

f:id:stknohg:20161018033330p:plain

これで元に戻ります。
なお、一度起動したdockerd.exeはDocker for Windows自体を終了するまで残り続ける様です。

最後に

とりあえずこんな感じです。
クリック一つでDocker Engineの切り替えができるのは非常に楽なので早くStable Channelに来てほしいですね。