服务器新增或更改IP之后,docker容器无法从服务器外部访问

原因:服务器IP更改之后,linux数据包转发配置net.ipv4.ip_forward会变为0,即关闭状态。查看命令:

sysctl net.ipv4.ip_forward

解决方法一:重启docker,docker会默认将net.ipv4.ip_forward值临时改为1(再次新增或更改IP之后会失效)

解决方法二:修改配置

1、临时生效的配置方式

临时生效的配置方式,在系统重启,或对系统的网络服务进行重启后都会失效。这种方式可用于临时测试、或做实验时使用。

(1)使用 sysctl 指令配置

sysctl 命令的 -w 参数可以实时修改Linux的内核参数,并生效。所以使用如下命令可以打开Linux的路由转发功能。

sysctl -w net.ipv4.ip_forward=1

有关 sysctl 指令的更详细介绍,请参见Linux的系统man手册(man sysctl),或其他有关sysctl指令详细介绍的文章。

(2)修改内核参数的映射文件:/proc/sys/net/ipv4/ip_forward

内核参数在Linux文件系统中的映射出的文件:/proc/sys/net/ipv4/ip_forward中记录了Linux系统当前对路由转发功能的支持情况。文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。可使用vi编辑器修改文件的内容,也可以使用如下指令修改文件内容:

echo 1 > /proc/sys/net/ipv4/ip_forward

2、永久生效的配置方式

永久生效的配置方式,在系统重启、或对系统的网络服务进行重启后还会一直保持生效状态。这种方式可用于生产环境的部署搭建。

(1)修改 /etc/sysctl.conf 配置文件

vi  /etc/sysctl.conf

如文件中已有net.ipv4.ip_forward参数,则将参数改为1;如不存在,则在文件末尾添加net.ipv4.ip_forward=1

(2)使新的系统配置生效

sysctl -p

(3)修改/etc/sysconfig/network配置文件

vi /etc/sysconfig/network

在文件最后添加一行:FORWARD_IPV4=YES

(4)使新的网络配置生效,需重启网络服务

service netwrok restart

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值