docker 网络模式
docker 网络 四种模式
容器核心问题
- 容器的IP地址分配
- 容器之间的相互通信
方式
- 最简单的方式 直接使用host网络 复用宿主网络协议 但是端口会冲突
- 容器自己的IP地址, 但是这样宿主导致路由,交换器感知不到容器IP,无法跨主机通讯
跨主机通讯
- 直接修改外部 网关路由配置 SDN结合
- 复用宿主网络
- 隧道传输
- 方式: vxlan、 ipip
- 应用: fannel、 weave
- 网络:三层或者四层
- 修改主机路由
- 方式: 宿主主机做网关 路由规则转发到指定的主机
- 应用: host-gw、calico
- 网络:三层互通
- 隧道传输
容器流量划分
- 东西流量 :内部容器通讯
- 南北流量 :内部和外部通讯
默认原生模式 brige
- 原理:
- veth pair 假如: veth0 和 veth1
- 创建 docker0
- veth0 加入 docker0 改为 veth
- veth1 加入到 Docker Container namespace 下面改为 veth0
- 一端进去 一端出来 实现两个容器通讯
- 缺点 :NAT 一样 外部无法访问容器
- 网络层级: 三层网络
host 利用宿主网络
- 原理:
- 直接复用 宿主网络
- 共享IP Port
- 无需 NAT
- 缺点 :
- 端口冲突
- 容器网络缺少隔离性
- 没有独立网络栈和主机竞争网络协议栈
- 部分端口已经用以 bridge网络模式容器的端口映射
- 网络层级: 三层网络
none 禁用网络协议 lookup 本地网络
- 原理:
- 禁用网络
- loopback 网络设备
- 适合容器开发
- 缺点 :
- 无法使用网络协议栈
- 网络层级: 三层网络
container:vm 容器网络
- 原理:
- 共享网络栈
- localhost通讯
- 缺点 :
- NAT 一样 外部无法访问容器
- 网络层级: 三层网络
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16496876.html