【docker】docker网络六种网络模式

news2025/1/14 10:24:23

Docker 网络模式总结

网络模式描述使用场景
bridge默认的网络模式,容器之间通过虚拟网桥通信,容器与宿主机隔离。单机部署、本地开发、小型项目
host容器与宿主机共享网络堆栈,容器直接使用宿主机的 IP 地址。高性能网络应用、日志处理、大量与宿主机网络交互的场景
none容器没有网络接口,完全隔离,不能与外部通信。安全隔离、高度自定义网络配置的容器
container容器共享网络命名空间,包括 IP 地址和端口空间。紧密耦合的容器,需要共享网络堆栈的场景
overlay跨多个主机的容器通信,常用于分布式系统。微服务架构、跨主机容器通信、分布式应用
macvlan容器拥有独立的 MAC 地址,容器直接与物理网络通信。需要与物理网络直接通信、容器作为网络设备的场景

Bridge 网络模式

在 Docker 中,bridge 是默认的网络模式。每当你创建一个容器但没有指定网络时,Docker 会自动将容器连接到名为 bridge 的网络。
在此模式下,容器会连接到一个虚拟的局域网(LAN),容器间通过虚拟网桥进行通信,容器与宿主机的通信通常通过端口映射进行。

特性

  • 默认网络模式,适用于单机环境。
  • 容器间通过虚拟网桥通信。
  • 容器与宿主机的网络隔离,需要通过端口映射来访问容器。
  • 每个容器会自动分配一个私有 IP 地址,容器间使用该地址进行通信。

使用场景

  • 本地开发环境:在单台机器上运行多个容器,容器之间需要相互通信。
  • 小型项目:适合小型的单机部署,无需跨主机通信。

创建和使用示例

docker run -d --name my_container --network bridge nginx

查看桥接网络

docker network inspect bridge

Host 网络模式

host 网络模式下,容器与宿主机共享网络堆栈,容器直接使用宿主机的 IP 地址和端口。
这种模式下容器与宿主机之间没有网络隔离,容器的端口直接映射到宿主机的端口。

特性

  • 容器与宿主机共享网络堆栈,因此没有网络隔离。
  • 高效,容器和宿主机之间的网络性能较好。
  • 适用于需要高性能网络通信的容器。

使用场景

  • 高性能要求的应用:例如需要较低延迟和较高吞吐量的网络应用。
  • 日志处理、数据流处理:当容器需要大量与宿主机进行网络交互时,使用 host 网络可以避免 Docker 网络的额外开销。

创建和使用示例

docker run -d --name my_container --network host nginx

None 网络模式

none 网络模式下,容器没有网络接口,也就是说,容器与宿主机或其他容器无法通信。
该模式下容器会被完全隔离,不会自动分配 IP 地址。

特性

  • 容器没有任何网络连接。
  • 适用于需要完全隔离的容器,或者需要容器手动配置网络的场景。
  • 没有端口映射和通信能力,所有的网络功能都需要通过其他方式手动配置。

使用场景

  • 高度安全的环境:例如,需要完全隔离的容器,不允许容器与外界网络通信。
  • 需要自定义网络配置的容器:在一些特殊场景下,容器的网络配置需要完全由用户手动控制。

创建和使用示例

docker run -d --name my_container --network none nginx

Container 网络模式

container 模式允许一个容器共享另一个容器的网络命名空间。
容器之间不仅共享 IP 地址,还共享端口空间和网络接口。换句话说,它们会“合并”成一个网络堆栈。

特性

  • 容器共享相同的网络命名空间,包括 IP 地址和端口。
  • 容器之间的通信更为紧密,适合需要直接共享网络堆栈的场景。
  • 适合将多个容器作为单一单元进行管理和配置。

使用场景

  • 密切耦合的容器:当你有多个紧密耦合的容器,它们需要直接共享网络时,例如一个容器作为代理服务,另一个容器提供业务逻辑,容器之间需要共享 IP 地址。

创建和使用示例

# 运行第一个容器
docker run -d --name container1 nginx

# 运行第二个容器,并让其共享第一个容器的网络
docker run -d --name container2 --network container:container1 nginx

Overlay 网络模式

overlay 网络模式用于跨多个 Docker 主机的容器之间通信。它通过 Docker Swarm 或 Kubernetes 等集群工具来实现容器跨主机的通信。
使用 overlay 网络时,Docker 会在容器之间创建一个虚拟网络,容器间的通信不受物理主机限制。

特性

  • 支持容器跨多个 Docker 主机通信。
  • 必须在 Swarm 模式下创建和使用。
  • 容器间的通信通过虚拟 IP 地址进行,外部网络无法直接访问容器,需使用负载均衡或端口映射。

使用场景

  • 分布式应用和微服务:适用于分布式架构,尤其是微服务应用,容器可能部署在不同的物理主机上。
  • 跨主机的容器通信:当你的应用需要跨多个物理主机进行容器间的通信时,overlay 网络是最佳选择。

创建和使用示例

# 创建一个 overlay 网络
docker network create -d overlay my_overlay_network

# 在两个不同的主机上分别启动容器,并连接到 overlay 网络
docker service create --name service1 --network my_overlay_network my_image
docker service create --name service2 --network my_overlay_network my_image

Macvlan 网络模式

macvlan 网络模式使容器可以拥有自己的 MAC 地址,容器就像物理主机一样在网络中进行通信。
容器具有直接的物理网络访问能力,可以进行网络广播等操作。

特性

  • 容器拥有独立的 MAC 地址,容器可以直接与宿主机网络进行通信。
  • 容器与宿主机网络隔离,容器之间的通信也通过 macvlan 网络进行。
  • 容器能与外部物理网络进行通信,非常适合需要容器和物理网络无缝连接的场景。

使用场景

  • 需要容器和物理网络直接通信的场景:例如,需要容器作为网络设备或需要处理广播流量的场景。
  • 在大型企业中运行大量容器,需要每个容器都能在物理网络上独立存在时使用 macvlan

创建和使用示例

# 创建一个 macvlan 网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 my_macvlan_network

# 运行一个容器并连接到 macvlan 网络
docker run -d --name my_container --network my_macvlan_network my_image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单点登录解决方案 CAS(Central Authentication Service)详解

目录 CAS 的工作原理 票据(Ticket)详解 CAS 的优势 CAS 的应用场景 小结 参考资料 Central Authentication Service(中央认证服务,简称 CAS)是一个开源的企业级单点登录(Single Sign-On, SSO&#xf…

输入json 达到预览效果

下载 npm i vue-json-pretty2.4.0 <template><div class"newBranchesDialog"><t-base-dialogv-if"addDialogShow"title"Json数据配置"closeDialog"closeDialog":dialogVisible"addDialogShow":center"…

U盘文件夹变打不开的文件:深度解析、恢复策略与预防之道

一、U盘文件夹变打不开的文件现象解析 在日常使用U盘的过程中&#xff0c;我们时常会遇到这样的困扰&#xff1a;原本存储有序、可以轻松访问的文件夹&#xff0c;突然之间变成了无法打开的文件。这些文件通常以未知图标或乱码形式显示&#xff0c;双击或右键尝试打开时&#…

2025年软考-网络工程师新旧教程及考纲变化对比!

2025网工教材改版基本确认&#xff01;网络工程师一直是软考中级的热门科目。最近&#xff0c;官方发布了官方第六版的网工教材&#xff0c;本次出版在原有第五版的基础上做了大量的删减&#xff0c;并新增了部分新内容。明年的软考考纲大概率会根据这次的新版教材进行修改&…

视觉处理基础1

目录 一、CNN 1. 概述 1.1 与传统网络的区别 1.2 全连接的局限性 1.3 卷积思想 1.4 卷积的概念 1.4.1 概念 1.4.2 局部连接 1.4.3 权重共享 2. 卷积层 2.1 卷积核 2.2 卷积计算 2.3 边缘填充 2.4 步长Stride 2.5 多通道卷积计算 2.7 特征图大小计算方法 2…

大疆T100大载重吊运植保无人机技术详解

大疆T100作为一款大载重吊运植保无人机&#xff0c;融合了全新的AI和AR功能&#xff0c;旨在进一步提升安全性并满足喷洒、播撒、吊运等多种作业场景的需求。以下是对其技术的详细解析&#xff1a; 一、总体性能 最大起飞重量&#xff1a;149.9公斤 喷洒容量&#xff1a;75升…

Kylin Server V10 下 RocketMQ 主备自动切换模式部署

一、NameServer简介 NameServer 是一个注册中心,提供服务注册和服务发现的功能。NameServer 可以集群部署,集群中每个节点都是对等的关系,节点之间互不通信。 服务注册 Broker 启动的时候会向所有的 NameServer 节点进行注册,注意这里是向集群中所有的 NameServer 节点注册…

ESP32+VSCODE开发过程无法使用Debug调试问题解决

1.点击Debug按钮报错 Error: libusb_open() failed with LIBUSB_ERROR_ACCESS Error: esp_usb_jtag: could not find or open device! 2.解决办法 1.找见espidf的安装目录下的如下文件&#xff08;如下自己的安装目录&#xff09; home\fjq\esp-idf\espidfv5.3.1\tools\tool…

【CSS】一篇掌握CSS

不是因为有了希望才去坚持,而是坚持了才有了希望 目录 一.导入方式 1.行内样式 2.内部样式 3.外部样式(常用) 二.选择器 1.基本选择器(常用) 1.1标签选择器 1.2类选择器 1.3id选择器 2.层次选择器 2.1后代选择器 2.2子选择器 2.3相邻兄弟选择器 2.4通用兄弟选择器…

MySQL底层概述—6.索引原理

大纲 1.索引原理 2.二叉查找树 3.平衡二叉树(AVL树) 4.红黑树 5.B-Tree 6.BTree 7.Hash索引 8.聚簇索引与非聚簇索引 1.索引原理 索引会在数据文件中(ibd文件)&#xff0c;通过数据页(Page)进行存储。索引可以加快检索速度&#xff0c;但也会降低增删改速度&#xff0…

C语言学习笔记:循环结构

循环结构 什么是循环 代码的重复执行&#xff0c;就叫做循环。 循环的分类 无限循环&#xff1a;程序设计中尽量避免无限循环&#xff0c;其实就是死循环。程序中的无限循环必须是可控的。有限循环&#xff1a;循环限定循环次数或者循环的条件。 循环的构成&#xff1a; …

stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别

大家有没有这样的困惑&#xff1a;在找模型时&#xff0c;老是会出现一些奇怪的标签&#xff0c;像 sd1.5、sdxl 之类的模型后缀&#xff0c;真让人摸不着头脑&#xff0c;一会儿 1.0&#xff0c;一会儿 1.5&#xff0c;一会儿 XL&#xff0c;完全搞不清楚状况。今天就来给大家…

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下AI高中数学教学视频生成技术&#xff1a;利用通义千问、MathGPT、视频多模态大模型&#xff0c;语音大模型&#xff0c;将4个模型融合 &#xff0c;生成高中数学教学视频&#xff0c;并给出实施方案。本文利用专家模…

PyCharm中Python项目打包并运行到服务器的简明指南

目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释器 配置部署 上传代…

git clone超大仓库时报错:fatal: early EOF

环境版本&#xff1a; 系统&#xff1a;Ubuntu git版本&#xff1a;version 2.43.0 在执行git clone命令时报错&#xff0c;信息如下&#xff1a; 系统&#xff1a;Win10 git版本&#xff1a;version 2.47.0 解决办法1&#xff1a; 1、关闭压缩&#xff1a; git conf…

C++基础:list的基本使用

文章目录 1.基本构造和插入删除基本构造和尾插数据迭代器的分类内置排序sort任意位置插入删除 2.链表的合并,去重和剪切链表的合并链表去重链表的剪切 list的本质就是带头双向循环列表 1.基本构造和插入删除 基本构造和尾插数据 与之前vector的方法相同直接调用即可 迭代器的分…

C++ explicit关键字的作用

C explicit关键字的作用 explicit的作用 这个关键字只能用于类的构造函数&#xff0c;被修饰的构造函数不能发生相应的隐式类型转换&#xff0c;只能以显式的方式进行类型转换。 另外&#xff0c;这个关键字只能用于单个参数&#xff08;这里的单个参数包括多参但是具有默认…

Leecode刷题C语言之N皇后②

执行结果:通过 执行用时和内存消耗如下&#xff1a; struct hashTable {int key;UT_hash_handle hh; };struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp; }void insert(…

全场景——(八)低成本 Modbus 传感器的实现

文章目录 一、硬件资源介绍与接线二、创建与体验第 1 个工程2.1 创建工程2.2 配置调试器2.3 配置 GPIO 操作 LED 三、UART 编程3.1 使用 STM32CubeMX 进行配置3.1.1 UART13.1.2 配置 RS485方向引脚 3.2 封装 UART3.3 上机实验3.3.1 硬件连接3.3.2 STM32H5 程序改造3.3.3 STM32F…

如何实现一套键盘鼠标控制两台计算机(罗技Options+ Flow功能快速实现演示)

需求背景 之前我写过一篇文章如何实现一套键盘鼠标控制两台计算机&#xff08;Mouse Without Borders快速上手教程&#xff09;_一套键鼠控制两台电脑-CSDN博客 当我们在局域网内有两台计算机&#xff0c;想使用一套键鼠操控时&#xff0c;可以安装Mouse Without Borders软件…