docker 在虚拟机运行需要虚拟机启用net.ipv4.ip_forward

问题背景

一个apache2的web服务运行在docker中,docker跑在vmware虚拟机上面。结果在apache2的docker中无法ping baidu.com,但是在vmware的linux虚拟机可以通。

问题分析

怀疑是linux虚拟机没有开启ipv4数据转发功能。

启用ipv4数据转发

修改/etc/sysctl.conf 配置文件
在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

需要注意的是,修改sysctl.conf文件后需要执行指令sysctl -p 后新的配置才会生效。

如果启用ipv4数据转发以后还不行,尝试关闭linux虚拟机的防火墙。

关闭linux虚拟机防火墙

sudo systemctl stop firewalld 临时关闭
sudo systemctl disable firewalld ,然后reboot 永久关闭
sudo systemctl status firewalld 查看防火墙状态。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容