docker0: iptables: No chain/target/match by that name

1,005 阅读1分钟

在之前安装docker后,服务器的防火墙是开着的,这时候,如果启动了某些软件,并且映射了端口后,会自动在服务器的iptables里面添加映射规则。这也就是为什么执行了docker run后,无需添加端口映射规则,该端口就可以被外界访问到的原因。

那么遇到如题的异常的情况可能就是,在运行程序的时候,防火墙是开着的,但是在之后,关闭了防火墙,这时软件也不会收到影响,直到重启该软件或者服务。这时候就可能提示如题的异常了。

我这里是运行了nginx,当时防火墙是开着的,后来由于别的原因,把防火墙给关了,今天修改了nginx配置后,执行docker restart nginx 后直接报了这个异常了。

记得之前遇到过这个问题,然后搜了一下,发现又是防火墙的问题,在此记录下自己的解决办法。

  1. 重启防火墙
  2. 如果不能开启防火墙,那么就需要重新运行服务了

首先重启docker:

systemctl 方式

守护进程重启
sudo systemctl daemon-reload
重启docker服务
sudo systemctl restart docker
关闭docker
sudo systemctl stop docker

service 方式

重启docker服务
sudo service docker restart
关闭docker
sudo service docker stop

如果重新docker后,还是无法正常重启服务或者软件,则需要重新运行服务命令了。

先停下docker ps里面的服务,然后使用 docker rm 容器ID 删除 docker ps -a里面的痕迹。

最后重新启动服务或者软件。