経緯
『
太古の昔より人々はWSLでDockerを動かそうとしてきた。
しかしながら、様々な理由からDocker for WindowsやVirtualBoxを頼らざるを得ない状況が続いていた…
』
みたいな認識。
実際ググるとそういうアプローチの記事がよく引っかかる。
WSL(Bash on Windows)でDockerを使用する - Qiita
WSLでDockerを使う - Qiita
Docker Engineが動かない理由はcgroupだったりSocketだったり様々な要因が絡んでいるのだろうと思っていたし、いつかWSLのアップデートによって解消される問題なのだろうと想像されていた。しかしなかなか解消されなかった。
そんな私もWindows 10の大型アップデートの度に期待をし、失望するというルーチンを繰り返してきた。
しかし、先日こんなツイートを見かけた。
は?いつの間にかdockerがWSLネイティブで動くようになってるやんけ pic.twitter.com/bSr0j9Ja0g
— あると (@twinkfrag) 2018年5月28日
まじかよ
そんなメモ。
ネタ元
詳しく流れを知りたい人は、下記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
すごい!!!ほんとに動いた!!!
ということで…
ホントにDocker EngineがWSLで動きました!
踏みそうな所
何故かStoreから入れたUbuntuじゃないと動かなかった。
( lxrun /install
で入れたいわゆる Legacy
ってやつでは動かない )
「動かないなー」って時は、どのディストリビューションが標準設定になっているのかを調べてみると良さそう。
WSLのディストリビューションの切り替えに関するメモ - Qiita
所感
最高かよ。