docker容器启动失败:Error response from daemon: driver failed programming external connectivity on endpoint

异常

正常走容器部署时出现iptables类的启动异常

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 

[root@localhost ~]# docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management
598104652a191643cc0f50acf5a8d740e8969664e6602aacfb3d833598bb0b3c
docker: Error response from daemon: driver failed programming external connectivity on endpoint rabbitmq (0e410ced1ee85515548c08134a2d6a899e58765eec53a30d7ea12996829e19ec):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 15672 -j DNAT --to-destination 172.17.0.2:15672 ! -i docker0: iptables: No chain/target/match by that name.

嫌麻烦可以放大截图信息 

背景

在此之前走过官网的体验指令

# latest RabbitMQ 3.12
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management

由于run -it 进入到了容器内部无法关闭firewall,新建窗口关闭了 firewall,然后原窗口退出容器,容器自动删除

体验完成后正式开启容器开始报上述iptables相关异常

总结

描述:体验Docker容器时对防火墙firewalld进行了同步操作,发生上述报错,

原因:docker服务启动时定义的自定义链DOCKER,当 centos7 firewall 被清掉时,

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

解决方案

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

systemctl restart docker


 

你可能感兴趣的:(Docker&K8S,docker,容器,运维)