dockerが突然動かなくなったので調べたら,IPv6を導入するとエラーが出るらしいの で設定を修正した.
dockerが動かない
こんなエラーを吐いて,dockerdがstartできない.
$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-07-03 11:32:23 JST; 14min ago
Docs: https://docs.docker.com
Process: 2807 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status Main PID: 2807 (code=exited, status=1/FAILURE)
Jul 03 11:32:23 hostname systemd[1]: docker.service: Service hold-off time over, scheduling restart.
Jul 03 11:32:23 hostname systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
Jul 03 11:32:23 hostname systemd[1]: Stopped Docker Application Container Engine.
Jul 03 11:32:23 hostname systemd[1]: docker.service: Start request repeated too quickly.
Jul 03 11:32:23 hostname systemd[1]: docker.service: Failed with result 'exit-code'.
Jul 03 11:32:23 hostname systemd[1]: Failed to start Docker Application Container Engine.
調べて出てきた原因の可能性
/lib/systemd/system/docker.service
内のファイルパス等がミスっているとdocker.service: Start request repeated too quickly.
が出るらしい- 合っていた
ipv6
に対応してないとかしているとかいう記事もある- ⇒これかも...?
syslogを見てみる.
Jul 3 11:49:50 hostname dockerd[3708]: time="2020-07-03T11:49:50.999199769+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Jul 3 11:49:51 hostname dockerd[3708]: time="2020-07-03T11:49:51.001215506+09:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby
Jul 3 11:49:51 hostname dockerd[3708]: failed to start daemon: Error initializing network controller: Error creating default "bridge" network: could not find an available, non-overlapping IPv6 address pool among the defaults to assign to the network
Jul 3 11:49:51 hostname systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Jul 3 11:49:51 hostname systemd[1]: docker.service: Failed with result 'exit-code'.
どうやら,networkまわりでエラーが出ているらしい. IPv6,あやしい…
IPv6対応
NW I/Fの確認
まず,現状でIPv6アドレスをdockerのインターフェースが持っているか見てみる.
$ ip a
(...)
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:7d:62:5a:64 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
(...)
ない.
ipv6設定
なので,設定する.
設定は/etc/docker/daemon.json
にある.どうやら最初からipv6は有効になっている
ようだが,v6 NWを指定してやると直るという情報があるので,設定してみた.
ちなみに,NWアドレスはこのアドレスが記事で使われていたので使ってみたが, NWアドレスを変更するとエラーが再発したので,どうもこのアドレス体系でないと ダメらしい…?
--- daemon.json.org 2020-07-03 11:57:46.451425472 +0900
+++ daemon.json 2020-07-03 12:00:50.722780714 +0900
@@ -1,3 +1,4 @@
{
- "ipv6": true
+ "ipv6": true,
+ "fixed-cidr-v6": "2001:db8:1::/64"
}
動作確認
直すと,こうなる...動いた…!
$ sudo service docker start
$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2020-07-03 12:07:58 JST; 48s ago
Docs: https://docs.docker.com
Main PID: 5524 (dockerd)
Tasks: 26
CGroup: /system.slice/docker.service
└─5524 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jul 03 12:07:57 hostname dockerd[5524]: time="2020-07-03T12:07:57.355983222+09:00" level=warning msg="Your kernel does not
Jul 03 12:07:57 hostname dockerd[5524]: time="2020-07-03T12:07:57.356053285+09:00" level=warning msg="Your kernel does not
Jul 03 12:07:57 hostname dockerd[5524]: time="2020-07-03T12:07:57.356085196+09:00" level=warning msg="Your kernel does not
Jul 03 12:07:57 hostname dockerd[5524]: time="2020-07-03T12:07:57.356417606+09:00" level=info msg="Loading containers: sta
Jul 03 12:07:57 hostname dockerd[5524]: time="2020-07-03T12:07:57.904427807+09:00" level=info msg="Default bridge (docker0
Jul 03 12:07:58 hostname dockerd[5524]: time="2020-07-03T12:07:58.020581169+09:00" level=info msg="Loading containers: don
Jul 03 12:07:58 hostname dockerd[5524]: time="2020-07-03T12:07:58.094013984+09:00" level=info msg="Docker daemon" commit=3
Jul 03 12:07:58 hostname dockerd[5524]: time="2020-07-03T12:07:58.094141391+09:00" level=info msg="Daemon has completed in
Jul 03 12:07:58 hostname dockerd[5524]: time="2020-07-03T12:07:58.140468154+09:00" level=info msg="API listen on /var/run/
Jul 03 12:07:58 hostname systemd[1]: Started Docker Application Container Engine.