微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第五章 容器网络管理

1、四种网络模式

  • bridge
    • -net=bridge,认网络,docker启动后创建一个docker0网桥,认创建的容器也是添加到这个网桥中。也可以自定义网络,相逼认的具备DNS发现,可以通过容器名之间进行通信。
  • host
    • -net=host,容器不会获得一个独立的网络命名空间,而是与宿主机共用一个。这意味着容器不会有自己的网卡信息,而是共用宿主机的ip和端口。容器除了网络,其他都是隔离的。
  • none
    • -net=none,获得独立的网络命名空间,但不为容器进行任何网络配置,需要手动创建。
  • container
    • -net=container:[name|id],与指定容器共用一个网络命名空间,具有相同的网络配置信息,两个容器除了网络,其他都是隔离。
      • eg:docker run -it --net=container:node1 --name node3 busyBox sh

2、docker网络模型

  • veth pair:成对出现的一种虚拟网络设备,数据从一端进,另一端出,可理解为连接容器网络命名空间与docker0网桥的一根网线,用于解决网络命名空间之间的隔离。

  • docker0:网桥是一个二层设备,通过网桥可以将linux支持的不同端口连接起来,并实现乐死交换机那样的多对多通信。可通过命令查看连接网桥的veth设备对(前提安装bridge-utils包)

  • 模型示图:

3、容器访问网络原理

  • 外部访问容器

  • 容器访问外部

4、容器网络实现核心技术:iptables

  • 四表五链

  • iptables工作流程

    img

    • PREROUTING: 在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
    • INPUT: 处理入站的数据包
    • OUTPUT: 处理出站的数据包
    • FORWARD: 处理转发的数据包
    • POSTROUTING: 在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
  • 容器规则查看

5、跨主机网络:实现容器多主机通信

  • 方法:借助flannel网络组件和etcd数据库。即每台宿主机分别部署flannel网络组件负责维护本地路由转发;部署一个ETCD数据库存储容器网络与主机之间的关系。

  • 部署方案:

    • 4添加environment路径应为:/var/run/flannel/docker

    • 部署完成后,需在各宿主机允许通过FORWARD链,具体操作如下:

      • iptables -P FORWARD ACCEPT

        或者

        iptables -I FORWARD --dst 172.17.0.0/16 -j ACCEPT

        172.17.0.0/16为整个网络

      • systemctl restart flanneld

      • systemctl restart docker

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐