[Work around/Fix] Docker loses network connectivity after first session terminates
Recently, I had trouble setting up docker, or to be more precise: running it. Every time I started the Docker daemon, and ran something like:
$ docker run busybox ping -c 3 184.108.40.206 PING 220.127.116.11 (18.104.22.168): 56 data bytes 64 bytes from 22.214.171.124: seq=0 ttl=45 time=20.118 ms 64 bytes from 126.96.36.199: seq=1 ttl=45 time=23.727 ms 64 bytes from 188.8.131.52: seq=2 ttl=45 time=19.803 ms --- 184.108.40.206 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 19.803/21.216/23.727 ms
Everything worked fine, but than the container was shut down, and I tried to run this container again it failed to connect/ping.
The first thing I noticed the
docker0 network interface had lost its IP address. Restarting Docker fixed this problem, but for doing a simple
ping, this is not a valid option. At first I though it might be the
avahi-daemon causing trouble, because I found things like
Withdrawing address record for fe80::a80e:15ff:fe76:6a1e on veth8cdefb7. Withdrawing address record for 172.26.0.1 on docker0.
in my logs. But this was just an misinterpretation of the messages, I think.
It took my I while to come up with the idea to check the routes. What I observed, when ever an container stop and is terminated the
docker0 interface was also shutdown and the route for this network and device were also deleted. Starting the container again did not add the route again.
As solution I have created a
docker.network configuration - as I am using systemd - to configure the network and routes properly.
[Match] Name=docker* [Network] DNS=192.168.0.1 Address=172.26.0.1/16 Gateway=192.168.0.1 IPForward=kernel