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

启动 docker 某服务,只显示 ipv6 的端口信息。ipv4 无端口信息,导致外部无法通过 ipv4 访问服务,报 Connection refused 错误

解决方法

在服务器上禁用 ipv6

1
vim /etc/default/grub

在第6行中增加 ipv6.disable=1

1
GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

重新配置grub并重启服务器

1
2
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

WARNING: bridge-nf-call-iptables is disabled

1
2
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

解决方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vim /etc/sysctl.conf

# 添加以下二行内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

# 然后使其生效
sysctl -p /etc/sysctl.conf

# 验证
docker info

docker 加速

推荐使用阿里云 docker 加速

使用流程: https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

找到镜像加速器

image-20200826111636483

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://sziho4ql.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

参考

  1. https://juejin.im/post/6844903953793024014