docker ps输出中0.0.0.0:5432->5432/tcp与:::5432->5432/tcp端口映射区别是什么
两个端口映射规则的核心区别是适配的IP协议栈不同:
0.0.0.0:5432->5432/tcp对应IPv4协议的端口映射:
0.0.0.0是IPv4协议下的未指定地址,代表监听主机上所有IPv4网卡的5432端口,所有通过IPv4协议访问主机5432端口的请求,都会被转发到postgres容器的5432端口。:::5432->5432/tcp对应IPv6协议的端口映射:
这里的三个冒号是Docker输出时的简写,完整规则为[::]:5432->5432/tcp,其中::是IPv6协议下的未指定地址,代表监听主机上所有IPv6网卡的5432端口,所有通过IPv6协议访问主机5432端口的请求,都会被转发到postgres容器的5432端口。
默认情况下如果你的主机和Docker都开启了IPv6支持,Docker会自动生成双栈端口映射规则,所以你会同时看到同端口的两条映射记录。如果你不需要IPv6映射的话,可以在docker-compose.yml的ports配置项显式指定绑定IPv4地址,写法为"0.0.0.0:5432:5432",就不会生成IPv6的映射规则。
内容的提问来源于stack exchange,提问作者Ravi Kiran Basa
相关产品推荐
相关产品推荐

