Posted at

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

More than 1 year has passed since last update.


経緯



太古の昔より人々は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


所感

最高かよ。