Edited at

WSLのdocker daemonを自動起動させる

More than 1 year has passed since last update.

紹介記事:WSL上でDocker Engineが動くようになっていたっぽいという話

WSLでLinuxのdockerが動くようになったようです(Docker for Windowsも不要!)

image.png

後は、

管理者権限でWSLを動かしてdockerのサービスを(手動)起動する

手間を減らしてみます。


環境

・Windows10 april 2018 update 適用 (Windows10 (Pro?) 1803)

・Ubuntu 16.04 (Microsoft Store版)

Windows10 april 2018 update から、WSLのdaemonが動くようになりました。

あと、Ubuntuは16.04をインストールして下さい。以下手順でdockerを入れる場合、18.04では動かないようです。


dockerのインストール

$ sudo apt update

$ sudo apt upgrade
$ sudo apt install docker.io


dockerの自動起動設定


シェルスクリプト作成

以下シェルスクリプトを作成して任意のパスに置いておきます。

#!/bin/sh

sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

例) ~/dockerstart.sh

(2018/08/14 追記)

別PCで、dockerが起動しない現象が有りましたが、

BIOS の Intel Virtualization Technology を OFF にしてUbuntuを入れ直したら起動するようになりました。

同様に動作しないという方は試してみて下さい。


タスクスケジューラ設定

Windowsのスタートメニューから、「Windows 管理ツール」-「タスクスケジューラ」を開きます。

image.png

右側の「タスクの作成」を選択して以下を設定します。

全般

「名前」:Docker (任意で)

「最上位の特権で実行する」にチェックを入れる(必須!)

トリガー

「新規」で作成し、

「タスクの開始」:ログオン時を選択

「設定」:特定のユーザを選択

操作

「新規」で作成し、

「操作」:プログラムの開始を選択

「プログラム/スクリプト」:wsl.exe

「引数の追加」:~/dockerstart.sh

 パスはWSL(Linux)形式で指定します。(C:ドライブ以下は、/mnt/c/)

条件

「コンピューターをAC電源で使用している場合のみタスクを開始する」チェックを外す

設定

「タスクが失敗した場合の再起動の間隔」:1分間

以上が完了したら、PCを再起動させます。

WindowsにログインするとWSLのコンソールが起動します。

image.png

sudoのパスワードが求められるので入力します。

これを省略したい場合は以下記事を参考にして下さい。

sudo のパスワードを入力なしで使うには

タスクマネージャーのバックグラウンドプロセスに dockerd が有れば成功です。

image.png


docker を使う

管理者権限不要です。WSL又は、WSL対応のコンソールを起動してdockerコマンドを使用します。



$ docker run hello-world



image.png


参考資料

WSL上でDocker Engineが動くようになっていたっぽいという話

Windows10 - 管理者権限が必要なアプリを自動起動(スタートアップ)

WSLを使うなら必須!「wsltty」で快適シェル環境を整える!