天天看点

docker rabbitmq_docker启动rabbitmq后不能外部访问

docker rabbitmq_docker启动rabbitmq后不能外部访问

启动命令:

$ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 --hostname testrabbit rabbitmq:3-management

启动成功

docker rabbitmq_docker启动rabbitmq后不能外部访问

但是在局域网另一台电脑上属兔IP:PORT后无法访问

docker rabbitmq_docker启动rabbitmq后不能外部访问

$ sudo systemctl stop firewalld.service

之后可以正常访问, 应该是防火墙没有开放端口

$ sudo systemctl start firewalld.service

$ sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent

$ sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent

$ sudo firewall-cmd --reload

结果还是不能访问

查看日志

$ sudo tail /var/log/firewalld

2020-02-25 15:09:03 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

查资料后得知, docker默认会自动添加iptables rule

尝试修改docker.service禁止修改iptables

$ sudo vim /lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改为:

ExecStart=/usr/bin/dockerd -H fd:// --iptables=false --containerd=/run/containerd/containerd.sock

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

重新启动容器后就能成功访问了

$ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 --hostname testrabbit rabbitmq:3-management

docker rabbitmq_docker启动rabbitmq后不能外部访问

继续阅读