我使用运行在端口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,因此经常执行此操作,并且可能已将防火墙规则配置为阻止对容器的直接访问(您不在环境中)。