mirror of
https://github.com/moby/moby.git
synced 2026-07-07 15:18:41 +00:00
When macvlan is given no '--gateway' option, an address is allocated from IPAM and a default route is set up via that gateway. But, the gateway address is not assigned to anything in the Docker macvlan network - it must be external, and IPAM shouldn't try to guess it. When IPv6 auto-configuration is enabled in the network the macvlan is connected to, the macvlan driver races against it to set up the gateway. When autoconfig wins, container creation fails because the default route already exists. So ... - disable IPAM gateway address allocation for macvlan - update the Join code to allow for no configured gateway - always disable 'docker_gwbridge' connection for macvlan networks, so it's not hooked up when there is no gateway address. Libnet assumes an endpoint with no statically configured default gateway or route does not provide external connectivity. So, it disables external DNS access, and will not select the endpoint as gateway for containers. So, where an IPAM allocated gateway address would have been assigned before, tell libnet to assume there will be an auto-configured gateway. Signed-off-by: Rob Murray <rob.murray@docker.com>