外网[客户端]访问 docker 内的容器遇到的问题

梦浪的小虾米
2022-03-15 / 0 评论 / 1,330 阅读 / 正在检测是否收录...

环境复现

宿主机: 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

评论 (0)

取消