一、虚拟机网络模式

在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式:

  1. NAT
  2. Bridged Adapter
  3. Internal
  4. Host-only Adapter

VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。

要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方。先来一张图,通过这张图就很容易看出这4种方式的区别:

NAT:Network Address Translation,网络地址转换,NAT模式是最简单的实现虚拟机上网的方式,虚拟机访问网络的所有数据都是由主机提供的,虚拟机并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到虚拟机的存在。虚拟机可以访问主机能访问到的所有网络,但是对于主机以及主机网络上的其他机器,虚拟机又是不可见的,甚至主机也访问不到虚拟机。
 

Bridged Adapter(网桥模式)是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。网桥模式下的虚拟机,你把它认为是真实计算机就行了。

 
Internal(内网模式)就是内部网络模式:虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
 
Host-only Adapter(主机模式)是一种比较复杂的模式,前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。我们可以理解为虚拟机在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
 
二、docker的4种网络模式
Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。docker根据如何为容器分配Network Namespace分为4种网络模式。
•bridge模式,使用--net=bridge指定,默认设置。
bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。在bridge模式下,连在同一网桥上的容器可以相互通信(若出于安全考虑,也可以禁止它们之间通信,方法是在DOCKER_OPTS变量中设置--icc=false,这样只有使用--link才能使两个容器通信)。默认docker容器对外是不可见的,外部主机访问主机的ip端口,然后通过DNAT转换到docker容器的ip和端口,从而间接的访问docker容器服务。也可以通过pipework等工具设置每个容器ip对外部主机可见。
•host模式,使用--net=host指定。
启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。容器中应用的ip和端口和宿主主机共用。
•container模式,使用--net=container:NAME_or_ID指定。
指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
•none模式,使用--net=none指定。
这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

来自为知笔记(Wiz)

docker学习3-虚拟网络模式相关推荐

  1. Docker的四种网络模式和相关网络命令等操作

    Docker网络模式 一.实现原理 二.Docker四种网络模式 三.Docker命令 1.查看网络列表 2.自定义网络固定IP 3.暴露端口 4.在宿主机环境执行容器内命令 5.怎么把宿主机的文件传 ...

  2. Docker的四种网络模式

    docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: bridge模式:使用–net =bridge指定,默认设置: host模式:使用– ...

  3. 5、Docker 的四种网络模式

    5.1 Docker 的四种网络模式 网络模式 网络配置 说明 host(开放式网络模式) –network host 容器和宿主机共享 Network namespace container(联合挂 ...

  4. Docker上的虚拟网络-Weave Net

    2019独角兽企业重金招聘Python工程师标准>>> Weave Net( https://www.weave.works )是Docker上的虚拟网络,可以将分布式的Docker ...

  5. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  6. Docker 的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  7. docker的五种网络模式

    目录 一.bridge网络(网桥的方式) 二.host网络 三.none网络 四.自定义网络 五.container模式 一.bridge网络(网桥的方式) 可以很清楚的看出容器和宿主机的关系,当我们 ...

  8. Docker 学习前置,网络IP地址以及交互

    想今天的一个docker的前期学习.说的即使网络的地址的分类寻找还有如何实现局域网和广域网䄦互相找到对方地址的信息. 然后docker本身是利用一些现有的硬件系统的基础上,去模拟一套对应的软件环境,让 ...

  9. Docker学习十:网络

    文章目录 一.查看网络 ip addr 二.查看容器内部网络地址 docker exec -it 容器ID ip addr( 这个地址是创建docker容器自动穿件的地址) 三.容器之间可以ping通 ...

  10. 阿良老师 Docker学习_容器网络

    veth pair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出.用于解决网络命名空间之间的隔离.(宿主机和容器) docker0:网桥是一个二层网络设备,通过网桥可以将linx支持的不同的端 ...

最新文章

  1. 青少年电子信息智能创新大赛 -- 图形化编程挑战赛初赛试题说明
  2. python中calendar怎么用_Python时间模块datetime、time、calendar的使用方法
  3. 二级路由dhcp关闭连不上wifi_酒店网络故障:原来还与DHCP服务器有关
  4. html5 fc,HTML5_mob604756fc093d的技术博客_51CTO博客
  5. fegin 参数丢失_许多参数和丢失的信息
  6. mysql error 1449_MySql错误:ERROR 1449 (HY000)
  7. opencv读取MATLAB双目标定的结果进行双目校正
  8. 用xib自定义UIView并在代码中使用--iOS
  9. 分治法的经典问题——大整数相乘
  10. [转载收藏]三层式开发中的层次划分
  11. linux nvme 驱动 版本,Linux 上的 NVMe
  12. 无人驾驶 ai算法_AI机器学习具有碳足迹,因此无人驾驶汽车也是如此
  13. 2020的迷之骗局:从瑞幸退市到老干妈炒鹅 | 凌云时刻
  14. 2015移动互联网行业趋势盘点(PPT)
  15. MathType批量修改公式字体和大小
  16. HPP(Hosted Payment Page)支付模式
  17. 跨境12V汽车一键启动PKE无钥匙进入遥控远程启动系统改装
  18. 基2-booth乘法器原理及verilog代码
  19. 计算机应用基础 周凌,计算机基础毕业论文范文
  20. 机器人关节模组的总结归纳

热门文章

  1. *[codility]CartesianSequence
  2. IOS文件操作(NSFileManager)
  3. 使用cmd命令创建vue(ivieiw)项目
  4. echarts常用术语
  5. P(Y|X) 和 P(X,Y)
  6. FastReport.Net使用:[1]屏蔽打印对话框
  7. 【HTML5+MVC4】xhEditor网页编辑器图片上传
  8. org.apache.jasper.JasperException: /index.jsp(14,2) The s:form tag declares that it accepts dyna
  9. C# 处理图像三种方法对比
  10. JavaScript parseInt() toString()函数