docker运行报错docker0: iptables: No chain/target/match by that name.

 最近在一个新的服务器上装服务,没有安装iptables ,后来安装了iptables 之后,忽然发现我的docker 不能运行了。

运行时报出了以下错误:

启动docker服务报错
Error response from daemon: No such container: yn-userservice-30000
26126ca87430b74c3987817492cc890e72c36e2fec10d807e362a12f22365160
/usr/bin/docker-current: Error response from daemon: driver failed programming external
 connectivity on endpoint yn-userservice-30000 (5d083ef51f932ac24936713ab3bc1cece9d47feabf4a916cf5da12a4fb2a122a):  
 (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 30000 -j DNAT --to-
 destination 172.17.0.2:30000 ! -i docker0: iptables: No chain/target/match by that name.

分享一下

大风车儿大神的回答:

容器和物理机的通信是通过内核转发实现的,具体体现为iptables里添加的nat规则。之前没有安装iptables直接搭docker也会在iptables生成关于docker的nat规则,因为系统自带了iptables,只不过没有以服务的方式启动。 重新安装iptables会覆盖掉之前的规则,导致docker运行报错。只需要重启一下docker就会重新生成iptables规则了。

解决办法:

1、停止docker服务
  输入如下命令停止docker服务

systemctl stop docker  或者service docker stop

停止成功的话,再输入docker ps 就会提示出下边的话:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

2、保存 iptables
  输入如下命令:

iptables-save >  /etc/sysconfig/iptables

3、启动docker服务
  保存了iptables后,可以重新启动docker了。输入如下命令:

systemctl start docker 或者service docker  start

4、将docker设置为开机启动
  设置过这个就不需要再设置了

systemctl enable docker

5、启动容器
  最后启动容器,发现不再报错了。

docker start 容器名字
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值