I have the following setup for my docker swarm:
- three Linux master nodes
- one Linux slave nodes
- Windows slave node
They are connected with an overlay network. Within the linux nodes everything works as expected.
But if I'm in a windows container(e.g. microsoft/nanoserver) and I try to ping a linux container with the internal dns name of the container. The DNS resolution works just fine, but the request times out. So far so bad. But it's getting stranger, because my linux container has two IP-addresses one is global loopback and another one which is in the same network.
Let's say the linux container has xx.xx.xx.2/32 as global lo and xx.xx.xx.3/24. The internal dns resolves to the ip xx.xx.xx.2. This cannot be pinged from windows containers. But the address xx.xx.xx.3 can be pinged. If I'm in a linux container, I can ping the xx.xx.xx.2 address. I also can curl the service(port 8080) of the windows container, within a linux container.
It's just weird. Has anyone experienced similar issues or can I manipulate the internal dns resolution of docker?
Also fun to note, it worked earlier. But after a swarm leave and join of the windows node it doesn't anymore.
- Windows Server 2016 - Docker version 17.06.2-ee-6, build e75fdb8
- RedHat 7.4 (Maipo) - Docker version 17.12.0-ce, build c97c6d6
UPDATE: The windows node cannot reach a container which runs on the linux slave node all other containers can be pinged normally, but from the linux master nodes it is possible to ping the containers which run on the linux slave nodes.