问题描述
近期在项目上使用docker部署服务时,服务无法被正常调用,服务端口telnet不通。宿主机ip可以ping通,宿主机上部署服务端口可以telnet通,宿主机可以telnet通docker服务端口。
问题分析
- 防火墙未开
- netstat 查看端口监听正常
- docker 配置文件编写正常
问题解决
网上度了一圈,使用以下方式解决
1、# vim /usr/lib/sysctl.d/00-system.conf
2、添加一下代码"net.ipv4.ip_forward=1"
3、# systemctl restart network
4、重建新容器,外网就可以访问了。
问题补充
- net.ipv4.ip_forward的参数。主要是目的是 当linux主机有多个网卡时一个网卡收到的信息是否能够传递给其他的网卡 如果设置成1 的话 可以进行数据包转发 可以实现VxLAN 等功能.
- 访问不通时可以使用docker logs xxx命令查看容器是否有ipv4转发错误(IPv4 forwarding is disabled. Networking will not work)