After hours and hours I was able to solve the problem
The MTU of the docker's bridge network has to match to the MTU of host's the network adapter
In my case the MTU of eth0 (host) was set to 1450 while MTU of docker0 was set to 1500
You can change the MTU by either
In case you don't have a /etc/docker/daemon.json
just create one:
# /etc/docker/daemon.json
# adjust the MTU accordingly to the hosts network adapter
{
"mtu":1450
}
Don't forget to restart docker.service: systemctl restart docker.service
Further details:
If you wan't to check the settings use ip
and compare the mtu value
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> **mtu 1450** qdisc fq_codel state UP group default qlen 1000
...
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> **mtu 1500** qdisc noqueue state DOWN group default
...
Note, that docker0 states always 1500 and changes it's value only if a container ist connected to that network
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000
...
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
...
17: vethe4b452f@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master docker0 state UP group default
...
Custom Network
I also tried to just create a custom network with a defined MTU
instead of setting the MTU
via /etc/docker/daemon.json
. This did not work and I don't know why
docker network create --opt com.docker.network.mtu=1450 CustomMTU