0%

driver failed programming external connectivity on endpoint nginx

今天在阿里云部署服务的时候报如下错:

1
2
3
4
5
6
7
8
9
10
root@iZ2zeagh7rzys1hl53collZ:~/data/csh_bk/docker# docker-compose -f nginx/docker-compose.yml up
Creating nginx ...
Creating nginx ... error

ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (84a2d44102b6fd874d94c52c199958bbb88214bf31890d9a66e264336f2a9794): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.20.0.2:80 ! -i br-90c5e5593694: iptables: No chain/target/match by that name.
(exit status 1))

ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (84a2d44102b6fd874d94c52c199958bbb88214bf31890d9a66e264336f2a9794): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.20.0.2:80 ! -i br-90c5e5593694: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: Encountered errors while bringing up the project.

1、本身部署服务需要按照Nginx mysql redis
2、安装完成后去阿里云设置安全组,打开对应的端口
3、打开后发现mysql和redis都可以访问 但是Nginx无法访问
4、后来发现是不小心动了防火墙,导致docker异常,重启docker服务,然后再重启对应服务即可

1
systemctl restart docker

原因:

docker服务启动时定义的自定义链DOCKER由于 centos7 firewall 被清掉

firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。

当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。

当你使用的是 Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动 或者重启 firewalld ,你就需要重启 Docker 进程了。

重启docker服务及可重新生成自定义链DOCKER

参考:https://blog.csdn.net/liyanhui1001/article/details/107507847

------------- 本文结束 感谢您的阅读-------------