We’ve created a couple of simple mock applications to test that our Docker deployment works properly in a cloud-based environment. Right now we have a Skytap environment with some Windows Server 2016 VMs with Docker Enterprise Edition installed.
– gRPC client running inside a container on one VM should be able to communicate with gRPC server running outside a container on a second VM (gRPC at its base enables communication between programs over HTTP2).
– communication between the two programs fails
– gRPC client can communicate with gRPC server in the desired configuration (two different host machines, gRPC client inside container) when testing on two physical machines with Docker EE on Windows Server 2016 installed
– gRPC client can talk to gRPC server as expected when both are located on the same VM in Skytap, without containers
– gRPC client can talk to gRPC server as expected when both applications are located on different VMs in Skytap, without containers
– gRPC client fails to talk to gRPC server when located on different VMs in Skytap AND gRPC client is running inside a container
– from inside the container, we’ve confirmed that the fully-qualified computer name for the gRPC server’s computer properly resolves to its IP address
– we have tried running gRPC both securely and insecurely to see if it was a credential issue, but neither mode works when gRPC client is containerized
– standard TCP communication (not using gRPC) between an application outside the swarm and a mock application in a container inside the swarm works as expected
My suspicion is that it may be a networking issue related to how we configured the VMs, or perhaps in the interaction between the virtual network connecting the VMs and the Docker networking created for the swarm, but we’re not sure.
My hope was that perhaps a member of the community has run into something similar in your time with Docker, or is aware of a configuration or a gotcha that we should investigate to possibly resolve the issue.