环境复现
宿主机: centos 7 + docker + web 容器 +mysql 容器 + redis 容器 局域网 ip: 192.168.70.122
我的电脑: win11
目的
在我的电脑访问宿主机里面的 mysql 容器和 redis 容器
下文中为了方便称呼,本地就代指我的电脑,宿主机就代指 centos7.
问题
- 宿主机重启网络后,本地通过 ip 无法访问 web 容器(例如:通过浏览器访问 http://192.168.70.122:80), 浏览器页面无任何错误代码
过程:通过观察 web 容器的日志,未发现任何错误日志和访问日志,推测未到 web 容器。猜测修改网络配置的格式不对,还原配置后,继续重启网络,依旧无法访问。重启服务器后,发现可以正常访问 web。推测是服务器网络问题,搜索一圈后,发现宿主机网络无任何问题。后续猜测可能是 宿主机与 docker 之间的通信出了问题。搜索后,通过对应的文章解决了问题。
临时解决方案:echo 1 > /proc/sys/net/ipv4/ip_forward //设为开启
永久解决方案:修改 /etc/sysctl.conf 文件 把net.ipv4.ip_forward=1写进去 重启网络之后docker网络也正常! - 通过 192.168.70.122:6379 访问 redis 无法访问
过程:通过观察发现我的容器默认绑定模式为:127.0.0.1:6379
解决方案:如果希望局域网访问或者外网访问的话,需要把容器的ip设置成局域网的ip。例如:192.168.70.122:6379
新学到的命令
需要重启网卡的话,通过 ifup eth0 启动网卡(该命令会检查配置文件)
参考
网络问题解决方案:https://blog.csdn.net/qq_27384769/article/details/116935205
评论 (0)