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

WSL上でDockerを動かす際に躓いたこと

追記(2020/08/24)

皆様、LGMTやストックありがとうございます。
最近こちらの記事を見てくださる方が増えていらっしゃるので念の為追記いたしますが、こちらの記事はWSL1を対象とした記事になります。
WSL2では挙動が変わっている可能性がございますのでご注意ください。:bow:

概要

初投稿です。
拙い部分はご容赦を

今までDockerを動かす際は、仮想マシン上やDocker for Windowsを利用していたのですが、LinuxネイティブのでDockerに移行することにした。
その際に躓いたことをまとめる。

とりあえずインストール

まずは以下の記事を参考にWSLにDockerをインストールしていく。
ここまではとっても簡単でインストールは終了。

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

Docker Daemonを起動

先程紹介した記事を参考にDaemonを起動

$ sudo cgroupfs-mount
$ sudo service docker start
 * Docker is running

よしよし起動したなと思ったのですがここで問題が

そのままの流れでhello-worldを表示してみると

$ sudo docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

なぜかデーモンが起動していない

そこでstatusをチェックする

$ sudo service docker status
 * Docker is not running

起動していないぞ?
ここから何度もsudo service docker startを叩いても起動せず困った。

原因

Docker for WindowsをWSLから呼び出せるようにしていたため
まず、自分はもともとDocker for WindowsをWSLから呼び出して使っていた。
どうやらその辺りの設定が悪さをしていたようだ。

もともとのDockerの環境構築方法はこちら
(こちらの環境でも特に不便はしていませんでしたが、個人的な趣味で移行を始めた次第です)
参考:Docker for Windowsで快適な環境を得るまでの そこそこ長い闘い

Docker for WindowsのExpose daemon on tcp://localhost:2375 without TLSのチェックを外す必要があった。
すると無事、Docker Daemonの起動に成功した。

まとめ

もし、似たような状態の方の助けになれば幸いです。

また、引用させていただいた2つの記事はWSLでDockerライフを送るためにはどちらも良い記事だと思います。
これらの記事を読んで、もっとWSLが普及するといいな

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