Docker in Docker (DIND) MTU fix for docker-compose

If you're running into weird connection stalling issues when inside a Docker-in-Docker environment, it's rather likely MTU is the culprit. For example, when basic network connectivity works (ping works, curl example.com works) but curl to a https endpoint stalls at TLS handshake, this is likely due your container unable to receive packets larger than a certain value.

Normally, the networking stack is able to discover the MTU using ICMP, however some endpoints choose to block ICMP which causes this to not work.

The solution is to change your container's MTU option by putting this in your docker-compose.yml:

networks:
  default: # or whatever your networks are named
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1450 # You may need to lower this value further

The --mtu option passed to dockerd only affects the MTU used for pulls/pushes and does not affect containers themselves, which is rather annoying.