Help us understand the problem. What is going on with this article?

どうしても Docker on Ubuntu 18.04 on WSL したかった

More than 1 year has passed since last update.

WSL上でDocker Engineが動くようになっていたっぽいという話
https://qiita.com/yanoshi/items/dcecbf117d9cbd14af87

上の記事を見て喜び勇んでやってみたら、最新のDockerでは動きませんでした.... と言うお話です。

(更新 2019/02/26) 私は結局、開発環境としてのWindowsから離れてしまったので試していませんが、Build 17713では動いたようだったので、現行ビルド (RS5, Version 1809, Build 17763.316) では普通に動くんじゃ無いかなと思います。

環境

  • Windows 10 Pro
    • Version 1803
    • Build 17134.165
  • Ubuntu 18.04
    • 16.04で docker.io を使うのであれば、バージョンが古いので多分あっさり動くと思います。
      動かないらしいです。調べてはいないですが、16.04のdocker.ioパッケージのバージョンが上がっているのかも。 (thx @ytakashina)

とりあえず試したら....

% sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Extracting [==================================================>]     985B/985B
docker: failed to register layer: Error processing tar file(exit status 1): invalid argument.
See 'docker run --help'.

がーん

最初はk8sが使ってみたかったため、docker 公式パッケージ docker-ce (18.06.0~ce~3-0~ubuntu) をインストールするもダメ。
Ubuntuが用意してくれているパッケージ docker.io (17.12.1-0ubuntu1) もダメでした。

どうすれば動くんだろう

と、言う事でいろいろ調べたところ、元々Docker on WSLについて議論が行われていたRedditのスレに答えがありました。

https://www.reddit.com/r/bashonubuntuonwindows/comments/8cvr27/docker_is_running_natively_on_wsl/dxxn30d/

That is this change . WSL doesn't support MS_SLAVE in mount. That error appears since docker-ce 17.09.1 but it's easy to fix if you compile latest docker yourself.

Docker 17.09.1 からマウント時に使うようになった MS_SLAVE と言うのをWSLがサポートしていないのが原因らしい。

取り急ぎ 17.09.0 で試してみる。

% curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
% sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
% docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

動いた。

と、言う事で現状どうしても Docker on Ubuntu 18.04 on WSL したいのであれば、以下の内のどれかを選ぶしか無さそうです。

  1. 17.09.0 を使う
  2. 以下コミットをRevertして自分でビルドして使う (未検証)
    https://github.com/docker/docker-ce/commit/6c6a1827cfc6c221c0477f55f20758a6e5487e5e
  3. WindowsをInsider Preview版にする (未検証。ビルド17666でMS_SLAVEがサポートされたらしい)
    RS5 の slow ring (build 17713) では hello-world が動いたらしいです。 (thx @hanotch)
  4. RS5のリリースを待つ (秋くらいですかね?)

もちろんDocker for Windowsと併用するのもアリだと思います。

WSL(Bash on Windows)でDockerを使用する
https://qiita.com/yoichiwo7/items/0b2aaa3a8c26ce8e87fe

guchio
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした