dockernetworking – 为什么docker集装箱响应127.0.0.1?

我启动一个docker容器,并在端口9324上运行一个服务:

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

我想这个容器会运行bridge0networking。 所以,如果我运行: 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地址,并且可能会configuration防火墙规则来阻止直接访问容器(不在您的环境中)。