LoginSignup
42
49

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-07-07

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

42
49
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
49