docker
Windows10
BashOnUbuntuOnWindows
WSL

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

経緯


太古の昔より人々はWSLでDockerを動かそうとしてきた。
しかしながら、様々な理由からDocker for WindowsやVirtualBoxを頼らざるを得ない状況が続いていた…

みたいな認識。
実際ググるとそういうアプローチの記事がよく引っかかる。
WSL(Bash on Windows)でDockerを使用する - Qiita
WSLでDockerを使う - Qiita

Docker Engineが動かない理由はcgroupだったりSocketだったり様々な要因が絡んでいるのだろうと思っていたし、いつかWSLのアップデートによって解消される問題なのだろうと想像されていた。しかしなかなか解消されなかった。
そんな私もWindows 10の大型アップデートの度に期待をし、失望するというルーチンを繰り返してきた。

しかし、先日こんなツイートを見かけた。


まじかよ
そんなメモ。

ネタ元

詳しく流れを知りたい人は、下記redditを参照。
ぶっちゃけ「WSLを管理者権限で動作させる」ってのと「Microsoft Store版のUbuntuを使う」って所を抑えておけば、サクッと動かせると思う。本メモはこれの抜粋。
https://www.reddit.com/r/bashonubuntuonwindows/comments/8cvr27/docker_is_running_natively_on_wsl/

検証環境

  • Windows 10 Pro(1803)
  • Ubuntu 16.04 in WSL(ストア版)(後述するけど非ストア版ではなぜか動かなかった)

下準備

Microsoft StoreからUbuntuを入れる

そもそもWSLを動かせない人はその準備を

管理者権限で動いているWSLからDockerをインストール

管理者権限(ココ重要)で動かしているWSLからDockerをインストール。

sudo apt update
sudo apt upgrade
sudo apt install docker.io
sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

hello-worldしてみる

sudo docker run hello-world

image.png

すごい!!!ほんとに動いた!!!

ということで…

ホントにDocker EngineがWSLで動きました!

踏みそうな所

何故かStoreから入れたUbuntuじゃないと動かなかった。
( lxrun /install で入れたいわゆる Legacy ってやつでは動かない )

「動かないなー」って時は、どのディストリビューションが標準設定になっているのかを調べてみると良さそう。
WSLのディストリビューションの切り替えに関するメモ - Qiita

所感

最高かよ。