我使用运行在端口9324上的服务启动Docker容器:

docker run -d -p 9324:9324 vsouza/sqs-local

我想象这个容器将在bridge0网络上运行。因此,如果我运行:docker network inspect bridge,我可以看到此容器位于ip:"IPv4Address": "172.17.0.2/16"上。

该服务在以下两个IP上都响应:172.17.0.2:9324和127.0.0.1:9324。

为什么此服务在127.0.0.1上响应?

最佳答案

-p 9324:9324告诉docker在主机上的端口9324的主机上的容器中发布9324端口。该端口的实际机制是通过一些iptables规则在该端口上进行伪装和dnat(分别用于出站和入站流量)。由于您并不总是知道每个容器的ip,因此经常执行此操作,并且可能已将防火墙规则配置为阻止对容器的直接访问(您不在环境中)。

08-28 09:58