使用docker-compse安装了一套系统。
结果发现mysql等中间件无法通过主机ip访问。
尝试使用 telnet 127.0.0.1 3306可以通,telnet 主机IP 3306不通。
经过各种折腾,发现问题。
居然没有创建ipv4的端口映射。
查了下资料发现,现在的很多新版本系统,都是默认ipv6网络优先。
然后安装docker后,docker默认使用ipv6构建docker0网络。
所以容器端口映射,仅创建了tcp6的端口,没有tcp的端口。也就是不支持使用ipv4访问。
解决办法:
修改主机/etc/docker/daemon.json的配置,增加如下配置项:
{
"ipv6": false,
"fixed-cidr-v6": ""
}
然后重启docker服务:
sudo systemctl restart docker
再查看
然后再telnet 主机IP 3306就可以了。
该方法同样可以解决redis等其他中间件问题。重点是这个网络问题。