Docker-stack. Forcing docker stack services to use ipv4

140 Views Asked by At

I would like to have a service being deployed as part of a docker stack to listen on ipv4. Currently the docker stack deployed service (rabbitmq) is listening on ipv6, I would like to have it listen via ipv4. The section of docker compose .yaml file that I using to deploy the docker stack as the following yaml section.

    rabbitmq-3-11-0:
      #image: rabbitmq:3.11.0-management
      image: "127.0.0.1:5000/bcl-sdv-rabbitmq-3-11-0:v0.1"
      ports:
        -
          "0.0.0.0:5672:5672/tcp"
        -
          "0.0.0.0:15672:15672/tcp" #15672: HTTP API clients, management UI and rabbitmqadmin (only if the management plugin is enabled)

On deployment of the docker stack, the "rabbitmq-3-11-0" service is deployed successfully.

To test IP connectivity I issue the following commands on the docker node.

ncat -w 2 -v ::1 5672 </dev/null; echo $?

yields

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to ::1:5672.

While the command

ncat -w 2 -v 0.0.0.0 5672 </dev/null; echo $?

yields

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 0.0.0.0:5672.
Ncat: Connection reset by peer.
1

The command

ncat -w 2 -v 127.0.0.1 5672 </dev/null; echo $?

produces

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:5672.
Ncat: Connection reset by peer.
1

The netstat command below

sudo netstat -tulnp|grep 5672

shows that the ports 5672 and 15672 are listening on ipv6.

tcp6       4      0 :::5672                 :::*                    LISTEN      2527/dockerd        
tcp6       0      0 :::15672                :::*                    LISTEN      2527/dockerd        

The command to determine the docker version below

docker info|grep Version

Outputs

 Server Version: 20.10.20
 Cgroup Version: 1
 Kernel Version: 3.10.0-1160.76.1.el7.x86_64

The Linux version command below

lsb_release

prints

LSB Version:    :core-4.1-amd64:core-4.1-noarch
0

There are 0 best solutions below