Why do I need to explicitly use port 80 for service to service communication in the same network


I either am missing to setup something properly, or I’m experiencing a weird problem.


I am having a docker-compose that setup 2 gRPC services (C# .NET Core 2.0) that should communicate with each other using service names, and that works until 2 days ago and I am not aware that I have any sort of update on my Windows, now what’s so ever I need to specify the port 80. Please see below my docker-compose file

version: '3.5'

    image: fooone.grpc.image
    container_name: fooone.grpc.container
      context: .
      dockerfile: src/FooOne/Dockerfile # Linux, C# .NET Core 2.0
      - "5001:80"
    image: footwo.grpc.image
    container_name: footwo.grpc.container
      context: .
      dockerfile: src/FooTwo/Dockerfile # Linux, C# .NET Core 2.0
      - "5008:80"

Creating gRPC channel from outside using localhost:5001 or localhost:5008 works fine, but “foo-one” will try to consume “foo-two” and if I don’t specify port 80 when grpc channel is created the call will fail, and there was no need for that before, and I don’t remember that I had any special configuration in docker-compose.

So why do I need to have new Channel(“foo-two:80”) for communication between to containers that belong to the same network, and not just new Channel(“foo-two”)?

If anyone has any clues what might be the issue here, I’d appreciate it greatly, because although specifying the port 80 is not a big deal, I would like to know why I had to do it and did I mess something up.


OS and Docker Info

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:51 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Windows 10 Enterprise - Version 1607 (OS Build 14393.2608)