docker单机网络类型

docker单机网络类型概述

      Docker 安装时会自动在 host 上创建三种网络  分别为 bridge    host   none .   可用 docker network ls 命令查看

    

none 网络

         none 网络就是什么都没有的网络.挂在这个网络下的容器除了 lo,没有其他任何网卡

         一些对安全性要求高并且不需要联网的应用可以使用 none 网络

host 网络

       连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样

       在容器中可以看到 host 的所有网卡,并且连 hostname 也是 host 的

      直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络.

      当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了.

     另一个用途是让容器可以直接配置 host 网路.比如某些跨 host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables.

bridge网络

        Docker 安装时会创建一个 命名为 docker0 的 linux bridge. 如果不指定--network,建的容器默认都会挂到 docker0

        docker0 对宿主机来讲相当于一个单独的网卡设备  对于运行在宿主机上的每个容器来说相当于一个交换机 所有容器的虚拟网线的一端都连接到docker0上

        并且docker0还是所有容器的网关

        容器的网卡 eth0@if34和宿主机上的brctl show 显示挂载到docker0桥下的veth28c57df是一对 veth pair

        veth pair 是一种成对出现的特殊网络设备,可以把它们想象成由一根虚拟网线连接起来的一对网卡,网卡的一头(eth0@if34)在容器中,另一头(veth28c57df)挂在网桥docker0上,其效果就是将eth0@if34也挂在了docker0上

        

 自定义bridge网络

     1.创建一个linux 网桥设备  基于Linux 内核支持创建              docker  network create  --driver bridge

     2.启动容器的时候把容器的网卡挂到此桥接设备上                docker   run      --network

         

   docker通过防火墙规则阻断了所有桥接设备的双向流量  相当于所有的交换机都是隔开的 要想跨网桥之间的容器进行通信 可以为容器添加单独的网卡设备

   如为httpd容器执行    docker network connect   my_net2 实现的网络拓扑如下

      

    

     

   

原文地址:https://www.cnblogs.com/yxh168/p/9602782.html