记录一次docker网络连接的问题:
docker 容器化技术
linux 主机防火墙重启了之后为啥docker 就不能正常连接网络了,需要重启docker服务;
系统版本:redhat 7.5 docker版本:19.03.13
说起这个问题,就不得不说docker的网络模式了:
1. host docker不会为容器创建独有的network namespace,特点容器与宿主机IP一致,网络性能高;
2. bridge 桥接模式,与vmware的nat模式有几分相似,特点 docker 会创建docker0网桥,写入iptables规则,docker会为容器创建独有的network namespace,也会为这个命名空间配置好虚拟网卡,路由,DNS,IP地址与iptables规则;
3. none 模式 网络环境为 none,即不为 Docker Container 任何的网络环境,一般做定制开发时才需要用到;
4. 容器共享模式,这种模式是host模式的一种延伸,一组容器共享一个network namespace;
对外表现为他们有共同的IP地址,共享一个网络栈;
kubernetes的pod就是使用的这一模式。
今天说的防火墙重启后,容器不能联网的问题就发生在bridge模式下,原因是在bridge模式下,docker会默认写入iptables规则,但是这些规则不知为何,没有写入磁盘所以当防火墙重启后,规则丢失,容器自然无法上网。
解决办法就是重启docker,重写规则,所以一般生产要不就是关闭防火墙起docker,要不就开启防火墙起docker,过程中不要让防火墙重启;