当前位置: 首页 > news >正文

谈谈docker的四种网络模式

docker的四种网络模式

docker的四种网络模式为:

1、host模式,使用 “-net=host” 指定;
2、container模式,使用"-net=container:NAME_or_ID"指定
3、none模式,用"-net=none"指定;
4、bridge模式。

1、host模式

  • 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。
  • 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统,进程列表等还是和宿主机隔离的。
  • 使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

描述:

  • 容器与宿主机共享网络堆栈。容器的网络接口与宿主机的网络接口绑定在一起,没有额外的虚拟网络层。
  • 容器使用宿主机的 IP 地址和网络端口。

使用场景:

1、性能要求高的应用
当需要最大化网络性能时,主机模式可以避免额外的网络抽象层。
2、与宿主机网络直接交互
当容器需要直接与宿主机的网络接口交互,如需要访问宿主机上的服务或资源时。
3、网络延迟敏感应用
对于低延迟应用,主机模式可以减少网络层的开销。

示例:

docker run --network host -d nginx

2、container模式

  • 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是宿主机共享。
  • 新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
  • 两个容器的进程可以通过lo网卡设备通信。
    描述:
  • 容器共享另一个容器的网络堆栈,即使容器有自己的网络命名空间,但它们共享同一个 IP 地址和端口空间。
  • 适用于容器之间需要直接通信的情况。

使用场景:

1、多进程应用
当你需要在多个容器中运行一个服务的不同进程,但它们需要共享网络设置(如同一个 IP 地址和端口)时。
2、服务集成
例如,将 Web服务器和数据库放在不同的容器中,它们可以通过容器网络共享同一个 IP 地址进行通信。

示例:

docker run -d --name web nginx
docker run -d --network container:web myapp

3、none模式

  • 使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
  • 这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

描述:

  • 允许用户创建自定义网络,提供更多的灵活性和控制,如子网、网关等。
  • 自定义网络通常包括桥接网络(bridge)、覆盖网络(overlay)等。
  • 提供 DNS 服务,容器可以使用服务名称进行相互通信。

使用场景:

1、跨主机网络(overlay networks)
适用于多主机集群环境,如使用 Docker Swarm 或 Kubernetes
部署的应用。
2、网络隔离
提供不同的网络隔离,容器可以只与同一自定义网络中的其他容器通信。
3、复杂应用场景
需要配置网络拓扑和子网的应用,如微服务架构中的服务发现和负载均衡。

示例:

# 创建自定义网络
docker network create my_network# 在自定义网络中启动容器
docker run --network my_network -d nginx

4、bridge模式

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

描述:

  • 默认的网络模式。每个 Docker 容器连接到一个名为 bridge 的虚拟网络中。
  • Docker 为每个容器分配一个内部 IP 地址,并通过 NAT(网络地址转换)使其可以与外部网络通信。
  • 容器之间可以通过内部 IP 地址进行通信。

使用场景:

1、本地开发和测试
适用于开发和测试环境中,容器之间需要通过 IP 地址通信,但不需要直接暴露在主机网络上。
2、小规模应用
对于小型应用或服务,桥接模式可以提供简单的网络配置和隔离。

示例:

docker run --network bridge -d nginx

总结

桥接模式:适用于单主机上的容器网络,默认网络模式。
主机模式:适用于需要高性能和直接与宿主机网络交互的场景。
容器模式:适用于需要共享网络栈的容器。
自定义网络模式:适用于复杂的网络需求,如多主机环境和网络隔离。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaDS —— 位图(BitSet)与 布隆过滤器
  • 数据结构总体概述
  • 三大科技看点引领奥运新风潮,你是否准备好迎接科技的未来?
  • write_sdc和write_script区别
  • 【gcc】基于gpt和python的流程和延迟梯度分析
  • C语言典型例题31
  • EXPLAIN和ANALYZE
  • PostgreSQL JSON 字段操作指南
  • JavaWeb——CSS的使用
  • 【Python第三方库】Requests全面解析
  • C++ | Leetcode C++题解之第332题重新安排行程
  • 历史库,成本与性能如何兼得?| OceanBase应用实践
  • 【数据结构七夕专属版】单链表及单链表的实现【附源码和源码讲解】
  • 【SpringBoot系列】接口参数的默认值与必要性
  • 服务器HTTP响应头安全性优化与漏洞修复方案
  • #Java异常处理
  • 30秒的PHP代码片段(1)数组 - Array
  • Apache Pulsar 2.1 重磅发布
  • js ES6 求数组的交集,并集,还有差集
  • NSTimer学习笔记
  • Shell编程
  • spring学习第二天
  • 安卓应用性能调试和优化经验分享
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 聊聊redis的数据结构的应用
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​补​充​经​纬​恒​润​一​面​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # .NET Framework中使用命名管道进行进程间通信
  • # Java NIO(一)FileChannel
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)mysql_MYSQL(三)
  • (四)模仿学习-完成后台管理页面查询
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)详解PHP处理密码的几种方式
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net mvc部分视图
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net 托管代码与非托管代码
  • .net/c# memcached 获取所有缓存键(keys)
  • .so文件(linux系统)
  • [100天算法】-x 的平方根(day 61)
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序