最近整理过一套Vmware中虚拟机的一个网络模型,下面我就来整理一下Docker的一个网络模型。Docker的网络模型:

  • bridge:桥模式
  • host:主机模式
  • none:无网络
  • container:容器模式

    宿主机上的网卡

    image.png

  • ens33:主要是外网网卡

  • lo:本地环回地址网卡
  • virbr0:虚拟网络,是按照 libvirt 服务后生成。暂时不管
  • broker0:是安装Docker后生成的,没创建一个Docker桥模式网络就会有一个DockerN网卡生成,网卡作为虚拟网桥

    桥模式bridge

    image.png

    本机拥有2块网卡

    1. ens33连接外部局域网
    2. docker0:对应Docker的桥模式网络中的一个,这块网卡有网桥(交换机的功能)
    3. docker0上的接口叫做 veth
    4. docker容器中的接口叫做:eth0

image.png
image.png

再创建一个桥模式网络

  1. docker network create my-bridge

image.png

个人感觉:broker0更像是一个三层的交换机,是一种NAT模式。类似于虚拟机中的NAT

Host模式

image.png

  • 容器直接使用宿主机的网卡,ip也是宿主机的
  • 端口映射无意义

none模式

就是不设置网络,自己玩单机

Container模式

image.png

  • 2个容器共享其中一个容器中的网络(网卡)
  • 2个容器内应用端口是共享的
    1. docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh

自定义网络

自定义网络它是桥接模式,她和bridge这个默认存在的桥接模式的网络不同点在于:

  • 自定义网络通过容器名和ip都可以ping通
  • 默认bridge只能通过ip

image.png

参考文章

  • 尚硅谷-周阳-Docker视频