Docker端口映射疑问:为何docker ps输出多出:::5432->5432/tcp?
Docker端口映射中
:::5432->5432/tcp的含义 :::5432->5432/tcp是Docker对IPv6端口映射的标准表示:
::是IPv6的通配地址,作用等同于IPv4的0.0.0.0,表示监听宿主机上所有可用的IPv6地址- 第一个
::后的冒号是地址与端口的分隔符,后续的5432是宿主机对外开放的IPv6端口,箭头指向容器内部的5432端口
两种命令的区别原因
- 使用
docker run -it -p 5432:5432 postgres-words时,Docker默认会同时在IPv4和IPv6双栈上监听指定端口,因此docker ps会输出两条映射记录,分别对应IPv4和IPv6的通配地址监听 - 显式指定
-p 0.0.0.0:5432:5432时,仅要求Docker监听IPv4的通配地址,不会生成IPv6的端口映射条目
如果宿主机系统启用了IPv6且Docker的IPv6功能处于开启状态,就会出现这种双栈映射的情况。若不需要IPv6映射,可通过显式指定IPv6地址(如-p [::]:5432:5432单独开启IPv6,或修改Docker配置关闭IPv6支持)来控制。
内容的提问来源于stack exchange,提问作者Alvis
相关产品推荐
相关产品推荐

