Ubuntu
docker
WSL
ubuntu18.04

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

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

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

後は、
管理者権限でWSLを動かしてdockerのサービスを(手動)起動する
手間を減らしてみます。

環境

・Windows10 april 2018 update 適用 (Windows10 (Pro?) 1803)
・Ubuntu 18.04 (Microsoft Store版)

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

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

タスクスケジューラ設定

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」で快適シェル環境を整える!