ぷろじぇくと、みすじら。

Dockerが利用するWindows ContainerとLinux Containerを切り替える

Created at:

Windows Containerを使う場合に、Docker for WindowsのインストーラをDockerのサイトからダウンロードしてきてインストールするとデフォルトではLinux Containerを使うようにセットアップされます。

その状態でWindows Containerのセットアップ手順に沿ってサービスを起動しようとすると以下のようなエラーが発生することがあります。

start-service : Failed to start service 'Docker Engine (docker)'.

アプリケーションのイベントログには以下のようなログが残ります。

fatal: open //./pipe/docker_engine: Access is denied.

これはLinux Container向けのエンジンと通信しようとするために発生しているようです。

PS C:\WINDOWS\system32> docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:40:59 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 07:52:04 2017
 OS/Arch:      linux/amd64
 Experimental: true

解決方法

タスクトレイのアイコンのメニューから “Switch to Windows containers…”を選択することでWindows Containersを使うように変更できます。

PS C:\WINDOWS\system32> docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:40:59 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.24)
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:40:59 2017
 OS/Arch:      windows/amd64
 Experimental: true