docker中的四种网络模式

这篇具有很好参考价值的文章主要介绍了docker中的四种网络模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现原理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

四类网络模式

Docker网络模式 配置 说明
host模式 –net=host 容器和宿主机共享Network namespace。
container模式 –net=container:NAME_or_ID 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式 –net=none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式 –net=bridge (默认为该模式)

host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。
docker中的四种网络模式

container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

docker中的四种网络模式

none模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
docker中的四种网络模式

bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。

docker中的四种网络模式文章来源地址https://www.toymoban.com/news/detail-439812.html

到了这里,关于docker中的四种网络模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis的四种模式优缺点

    Redis是一个完全开源的内存数据结构存储工具,它支持多种数据结构,以及多种功能。Redis还提供了持久化功能,可以将数据存储到磁盘上,以便在重启后恢复数据。由于其高性能、可靠性和灵活性,Redis被广泛应用于缓存、会话管理、排行榜、实时分析、消息队列等领域。

    2024年02月15日
    浏览(31)
  • LED屏幕3D特效的四种原理

    2D与3D的区别在于,前者是平面显示,而后者是立体显示。从2D到带眼镜观看3D,再到裸眼3D技术,无不说明技术的进步。随着裸眼3D技术越来越成熟,LED显示屏厂家在LED电子大屏幕的基础上搭载3D技术的案例越来越多。那么,LED电子大屏幕3D特效是如何实现的?其四种原理又分别

    2024年02月16日
    浏览(26)
  • burp suite爆破的四种模式解析

    Sniper(狙击手模式): 如果爆破点设置一个,爆破字典是5条,那么就爆破5次 例如爆破点为一个 字典列表为(admin,admin@123,administrator,console,system)   如果爆破点为两个那么就爆破10次(两个爆破点依次爆破,比如两个爆破字段 账号和密码,先爆破账号字段(五次)在爆

    2024年02月13日
    浏览(25)
  • Kotlin: 协程的四种启动模式(CoroutineStart)

    点击查看CoroutineStart英文文档 创建协程的三种方式 runBlocking 运行一个协程并且会阻塞当前线程,直到它完成。 launch 启动一个新的协程,不会阻塞当前线程,并且返回一个Job,可以取消。 async async和await是两个函数,这两个函数在我们使用过程中一般都是成对出现的。 async用

    2024年04月23日
    浏览(41)
  • JavaScript中的四种枚举方式

    字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合。 一周的日子(星期一,星期二,...,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子。 当一个变量有一个来自有限的预定义常量的值时,使用

    2024年02月03日
    浏览(46)
  • Unity中的四种基本光源

    Unity中的四种基本光源:点光源、方向光、聚光灯、面光灯 1.点光源 从光源位置向所有方向发射出强度相等的光线 在传输过程中不断的衰减、当传输距离达到预设的极限距离range时,光线强度衰减为0 适合模拟灯笼,火把等局部光源 2.方向光 不会衰减,它以相同的强度和方向

    2024年02月07日
    浏览(40)
  • 06-PS中的四种蒙版

    Photoshop中的蒙版就是遮罩的意思,主要作用就是将其所在的图层,把不同的明暗度转化成相应的透明度。黑色为完全透明,灰色为半透明,白色为完全不透明。添加蒙版有便于灵活修改,不影响图层原貌。PS蒙版有四类:图层蒙版、剪切蒙版、矢量蒙版、快速蒙版。 遮住此图

    2024年02月02日
    浏览(28)
  • CSS中的四种定位方式

    在CSS中定位有以下4种: 静态定位 - static 相对定位 - relative 绝对定位 - absolute 固定定位 - fixed 静态定位是css中的默认定位方式,也就是没有定位。在此定位方式中设置:top,bottom,left,right,z-index 这些属性都是无效的。 相对位置前的位置: 相对位置后的位置: 可以看到该

    2024年02月08日
    浏览(78)
  • 解决iphone卡在恢复模式的四种方法

    比如系统升级的时候卡在恢复模式、降级系统、或者是在手机越狱过程中以及一些误操作可能手机就莫名其妙的进入到了iPhone恢复模式。 恢复模式在平时的应用主要是在iPhone连接电脑的时候,电脑无法识别到手机,我们将iPhone调至恢复模式就能够被电脑识别到了,之前我也分

    2024年02月10日
    浏览(123)
  • Java中的四种权限修饰符

    在Java中,存在四种访问修饰符,它们是public、private、protected和default。它们的访问权限从高到低依次为public protected default private。 1.public:public修饰的类、属性或方法可以被任何其他类访问,包括外部的类、同一个包内的类以及子类。 例如: 在这个例子中,Person类被声明为

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包