7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSL2/Ubuntu20.04 で docker を初期起動するときに起動できない問題の解決

Last updated at Posted at 2021-08-05

新しいマシンに、WSL2/Ubuntu20.04 をインストールして、docker を起動するとエラーは出ないけど、起動しない。
おかしいなと思って、sudo dockerd で起動してみると下記のエラーが出ていた

WARN[2021-08-05T14:59:17.371395300-07:00] grpc: addrConn.createTransport failed to connect to {unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}. Err :connection error: desc = "transport: Error while dialing dial unix:///var/run/docker/containerd/containerd.sock: timeout". Reconnecting...  module=grpc
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.4 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

これは、2つの理由で起こっているっぽい。Dockerが想定するIPテーブルがこのバージョンのOSでサポートされていないので、設定を変更するひつようがある。

$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
$ sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).

  Selection    Path                       Priority   Status
------------------------------------------------------------
  0            /usr/sbin/iptables-legacy   20        auto mode
* 1            /usr/sbin/iptables-legacy   20        manual mode
  2            /usr/sbin/iptables-nft      10        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

しかしこれを実施しても、権限がないとおこられてしまう。私は、まずdockerをBridgeモードで起動する。下記のファイルを書き換えると、IPテーブルを無効にして、Bridgeで上がるようになる。ただし、それも権限不足でうまくいかない。

/etc/docker$ cat daemon.json 
{
        "iptables": false
}

どうするかというと、コマンドプロンプトをアドミンモードで起動してそこで、WSL2を起動する。具体的にはbashコマンドで起動する。そこで、sudo dockerd を実行すればよい。
すると、Bridgeが作られる。権限がWindows側というのが驚きだが、もしかすると、Bridgeモードでなくても、iptable でも設定を変えて、Windows側のAdminモードで実行すればよかったのかもしれない。最初の1回の初期化の際のみ必要なので、2回目以降の起動では必要ないみたい。

Resource

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?