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 一样 外部无法访问容器
  • 网络层级: 三层网络
posted @ 2022-07-20 10:13  vx_guanchaoguo0  阅读(26)  评论(0编辑  收藏  举报