背景
公司使用docker在部署一些实际的项目时候,时常出现一些灵异的网络问题,导致服务不可用之类的。
原因分析
根据资料查询结合自己已知的,centos7的防火墙默认为 firewall,但firewall 的底层是使用iptables进行数据过滤的,而docker也是使用iptables来进行网络隔离和管理。正好最近出问题是因为添加防火墙策略相关操作之后发生的。
分析之后的原因为Centos7的firewall与Docker 产生冲突。在修改了 firewalld规则之后重启,或者在docker启动之后才启动firewall,firewall将从iptables中移除docker的规则,从而影响了 Docker 的正常工作。
解决办法(仅对Centos7)
- 操作系统退回iptables来代替firewalld
- 关闭防火墙(不安全,不建议)
- 清除现有的docker 容器,关闭docker,启动防火墙,或者重启防火墙,重启docker服务,重新创建新的容器。