Docker映射端口时仅有IPv6无法到IPv4解决方法

9,575 阅读1分钟

环境

OS: CentOS7 1810
Docker: 19.03.1
Docker-compose: 1.24.1

情况说明

使用阿里云源安装Docker后,使用docker-compose简单编排容器并启动容器,发现所有容器映射到宿主机端口均在IPv6上而IPv4上什么都没有。
经查阅资料后发现早在2013年Git上就有相关问题的讨论了,git issues
这个问题按个人理解好像是Golang的net/http库在Linux下监听网络的问题(如有错误请帮忙指正,谢谢)

解决方法

在服务器上禁用IPv6
使用vim打开/etc/default/grub在第6行中增加ipv6.disable=1 例如:

GRUB_CMDLINE_LINUX="ipv6.disable=1 ..."

重新配置grub并重启服务器

$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ reboot

等到服务器重启完成后,我们再次使用netstat查看tcp协议(也可以使用lsof -n -i TCP | grep docker),结果如下