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

Docker 网络的几种常见类型

目录

Docker 网络类型

桥接网络(Bridge)

通俗解释

特点

使用场景

示例

主机网络(Host)

通俗解释

特点

使用场景

示例

None 网络

通俗解释

特点

使用场景

示例

Overlay 网络

通俗解释

特点

使用场景

示例

Macvlan 网络

通俗解释

特点

使用场景

示例


Docker 网络类型

桥接网络:适合开发和测试环境,隔离性强。

主机网络:性能最高,适合高性能需求的场景。

None 网络:完全隔离,适合离线任务或安全隔离。

Overlay 网络:适合分布式应用和集群环境。

Macvlan 网络:适合需要直接接入物理网络的场景。

桥接网络(Bridge)

通俗解释

桥接网络就像是一个“虚拟的局域网”。Docker 在宿主机上创建了一个虚拟的网桥(比如 docker0),所有的容器就像连接到同一个路由器的不同设备一样,通过这个网桥互相通信,也可以访问外部网络。

特点
  • 隔离性:容器之间通过虚拟网桥隔离,比较安全。
  • 默认配置:Docker 默认会创建一个桥接网络,容器如果没有指定其他网络,就会连接到这个默认的桥接网络。
  • 外部访问:可以通过端口映射(-p 参数)让外部访问容器内的服务。
使用场景
  • 开发环境:适合开发时需要多个容器互相通信的场景,比如一个 Web 应用和一个数据库容器。
  • 测试环境:用于隔离测试环境中的容器,避免影响其他服务。
示例
# 创建一个自定义桥接网络
docker network create my_bridge# 启动容器并连接到桥接网络
docker run -d --name my_web --network my_bridge nginx

主机网络(Host)

通俗解释

主机网络模式就像是“容器直接插在宿主机的网络接口上”。容器直接使用宿主机的网络栈,没有隔离,容器的网络配置和宿主机完全一致。

特点
  • 性能高:没有网络隔离和虚拟化开销,性能最好。
  • 无隔离:容器可以直接访问宿主机的网络,安全风险较高。
  • 端口冲突:容器和宿主机不能使用相同的端口。
使用场景
  • 高性能需求:适合对网络性能要求极高的场景,比如高性能的数据库服务。
  • 简单部署:适合不需要网络隔离的简单应用。
示例
# 启动容器并使用主机网络
docker run -d --name my_web --network host nginx

None 网络

通俗解释

None 网络就像是“拔掉网线”,容器没有任何网络配置,无法访问外部网络,也无法和其他容器通信。

特点
  • 完全隔离:容器完全与外界隔离,安全性最高。
  • 用途特殊:通常用于一些不需要网络的场景。
使用场景
  • 离线任务:比如运行一些不需要网络的脚本或工具。
  • 安全隔离:确保容器完全不会对外泄露信息。
示例
# 启动容器并使用 None 网络
docker run -d --name my_container --network none nginx

Overlay 网络

通俗解释

Overlay 网络就像是“跨多个主机的虚拟网络”。它允许在不同主机上的容器之间互相通信,就像它们在同一个局域网中一样。

特点
  • 跨主机通信:容器可以跨多台主机通信,非常适合分布式应用。
  • 需要 Docker Swarm:通常需要在 Docker Swarm 模式下使用,用于集群环境。
  • 复杂性较高:配置和管理相对复杂,但功能强大。
使用场景
  • 微服务架构:适合微服务架构,容器分布在多台主机上。
  • 集群环境:用于 Docker Swarm 集群,管理多个主机上的容器。
示例
# 创建一个 Overlay 网络
docker network create -d overlay my_overlay# 在不同主机上启动容器并连接到 Overlay 网络
docker run -d --network my_overlay my_image

Macvlan 网络

通俗解释

Macvlan 网络就像是“给容器分配一个真实的 MAC 地址”,让容器看起来像是直接连接到物理网络的设备。

特点
  • 模拟真实设备:容器有自己的 MAC 地址,可以直接访问物理网络。
  • 适合特定场景:适用于需要直接接入物理网络的场景。
  • 配置复杂:需要配置物理网络接口,比较复杂。
使用场景
  • 网络设备模拟:模拟真实的网络设备,比如交换机或路由器。
  • 直接接入物理网络:容器可以直接访问物理网络中的其他设备。
示例
# 创建一个 Macvlan 网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan# 启动容器并连接到 Macvlan 网络
docker run -d --network my_macvlan my_image

相关文章:

Docker 网络的几种常见类型

目录 Docker 网络类型 桥接网络(Bridge) 通俗解释 特点 使用场景 示例 主机网络(Host) 通俗解释 特点 使用场景 示例 None 网络 通俗解释 特点 使用场景 示例 Overlay 网络 通俗解释 特点 使用场景 示例 Ma…...

C++ 常用的设计模式

1:单例模式:首先能想到的,最为重要的一个设计模式。确保一个类仅有一个实例,提供一个 全局访问点,惯用做法是屏蔽构造数访问(设为private),通过static 权限达到间接访问调用的目的…...

【设计模式】01- 一文理解常用设计模式-“创建型模式”篇

一、前言 最近在复习设计模式,撰写、整理了内容和代码片段,和大家一起交流学习。 设计模式是软件设计中常见问题的典型解决方案。 修改记录 更新内容更新时间第一版 250212 更新了对文章中的模式代码示范的解释250214 二、模式分类 模式可以根据其意图…...

在ArcGIS JS API中使用WebGL实现波纹扩散特效

在现代WebGIS开发中,ArcGIS JS API 是一个非常强大的工具,它允许开发者创建丰富的地理信息应用。结合WebGL技术,我们可以实现更加复杂和炫酷的可视化效果。本文将介绍如何使用ArcGIS JS API结合WebGL实现一个波纹扩散特效。 波纹扩散效果 1 概…...

我用AI做数据分析之四种堆叠聚合模型的比较

我用AI做数据分析之四种堆叠聚合模型的比较 这里AI数据分析不仅仅是指AI生成代码的能力,我想是测试AI数据分析方面的四个能力,理解人类指令的能力、撰写代码的能力、执行代码的能力和解释结果的能力。如果这四个能力都达到了相当的水准,才可…...

《LSTM与HMM:序列建模领域的双雄对决》

在序列建模的广阔领域中,长短期记忆网络(LSTM)和隐马尔可夫模型(HMM)都是极为重要的工具,它们各自有着独特的优势和应用场景。下面将对两者在序列建模上的异同进行深入探讨。 相同点 序列数据处理能力&…...

Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用

Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用 在 Flutter 里,Key 对象存在的目的主要是区分和维持 Widget 的状态,它是控件在渲染树里的「复用」标识之一,这一点在之前的《深入 Flutter 和 Compose 在 UI 渲染刷新时…...

只需三步!5分钟本地部署deep seek——MAC环境

MAC本地部署deep seek 第一步:下载Ollama第二步:下载deepseek-r1模型第三步:安装谷歌浏览器插件 第一步:下载Ollama 打开此网址:https://ollama.com/,点击下载即可,如果网络比较慢可使用文末百度网盘链接 注:Ollama是…...

网络工程师 (31)VLAN

前言 VLAN(Virtual Local Area Network)即虚拟局域网,是一种将物理局域网划分成多个逻辑上独立的虚拟网络的技术。 一、定义与特点 定义:VLAN是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置…...

浏览器网络请求全流程深度解析

一、核心流程概述 现代浏览器的网络请求过程是一个分层协作的精密系统,涉及应用层协议、传输层协议、操作系统内核及网络基础设施的协同工作。整个过程可抽象为以下关键阶段: 请求构建与初始化DNS解析与寻址TCP连接建立HTTP协议交互响应处理与资源解析…...

React历代主要更新

一、React 16之前更新 React Fiber是16版本之后的一种更新机制,使用链表取代了树,是一种fiber数据结构,其有三个指针,分别指向了父节点、子节点、兄弟节点,当中断的时候会记录下当前的节点,然后继续更新&a…...

【数据结构】(8) 二叉树

一、树形结构 1、什么是树形结构 根节点没有前驱,其它节点只有一个前驱(双亲/父结点)。所有节点可以有 0 ~ 多个后继,即分支(孩子结点)。每个结点作为子树的根节点,这些子树互不相交。 2、关于…...

navicat导出表结构到Excel 带字段备注

navicat导出表结构到Excel 带字段备注 SELECTCOLUMN_NAME AS 字段名称,COLUMN_TYPE AS 字段类型, IF( IS_NULLABLE NO, 否, 是 ) AS 是否必填,COLUMN_COMMENT AS 注释 FROMINFORMATION_SCHEMA.COLUMNS WHERE -- 数据库名table_schema vmscenter -- 表名AND table_name y…...

使用pocketpal-ai在手机上搭建本地AI聊天环境

1、下载安装pocketpal-ai 安装github的release APK 2、安装大模型 搜索并下载模型,没找到deepseek官方的,因为海外的开发者上传了一堆乱七八糟的deepseek qwen模型,导致根本找不到官方上传的……deepseek一开源他们觉得自己又行了。 点击之…...

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二…...

FPGA简介|结构、组成和应用

Field Programmable Gate Arrays(FPGA,现场可编程逻辑门阵列),是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物, 是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的&#xff0c…...

[c语言日寄]在不完全递增序中查找特定要素

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...

Golang的多团队协作编程模式与实践经验

Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域,多团队协作编程是一种常见的工作模式。特别是对于大型项目来说,不同团队间需要协同合作,共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…...

cv2.Sobel

1. Sobel 算子简介 Sobel 算子是一种 边缘检测算子,通过对图像做梯度计算,可以突出边缘。 Sobel X 方向卷积核: 用于计算 水平方向(x 方向) 的梯度。 2. 输入图像示例 假设我们有一个 55 的灰度图像,像素…...

Windows软件自动化利器:pywinauto python

Pywinauto WindowsAPP UI自动化 Windows软件自动化利器:pywinauto python...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...