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

Docker 网络模式详解:bridge、host、overlay 和 macvlan

Docker 网络模式详解bridge、host、overlay 和 macvlanDocker 提供了多种网络模式让容器既能灵活通信又能实现安全隔离。无论是单机多容器应用还是跨主机的 Swarm 集群亦或需要直接接入物理网络的 IoT 设备Docker 的网络子系统都有对应的解决方案。本文将系统讲解 Docker 全部 5 种网络模式——bridge、host、none、overlay 和 macvlan——并提供完整的配置示例和实战演示帮助你在生产环境中做出正确的网络架构决策。服务器配置学习和测试 Docker 网络不需要顶级硬件但需要一台干净、稳定的 Linux 环境。推荐选用雨云服务器 rainyuncom的2 核 4GB 机型该配置足以同时运行多个容器、测试 Swarm 单节点集群以及模拟 macvlan 和 overlay 网络场景。注册填码2026off领 5 折券性价比极高。推荐操作系统Ubuntu 22.04 LTS 或 Debian 12。本文所有命令均在该环境下验证通过。核心概念Docker 网络模式本质上是通过 Linux 内核的网络命名空间network namespace、虚拟网卡veth pair、网桥bridge以及 iptables/nftables 规则来实现的。理解这一底层机制有助于排查网络故障。网络模式隔离性跨主机典型场景bridge中否单机多容器默认推荐host无否高性能、低延迟应用none完全否安全沙盒、纯计算任务overlay中是Swarm 集群、微服务macvlan中否*IoT、需要独立 IP 的场景安装与配置安装 Docker# 一键安装脚本Ubuntu/Debiancurl-fsSLhttps://get.docker.com|bash# 将当前用户加入 docker 组避免每次都用 sudosudousermod-aGdocker$USERnewgrpdocker# 验证安装dockerversiondockerinfo模式一bridge默认网络模式bridge 是 Docker 的默认网络模式。每个容器拥有独立的网络命名空间通过虚拟网卡对连接到宿主机上的docker0网桥再经 NAT 访问外网。使用默认 bridge 网络# 运行两个容器均连接默认 bridgedockerrun-d--nameapp1--networkbridge nginx:alpinedockerrun-d--nameapp2--networkbridge alpinesleep3600# 查看默认 bridge 网络信息dockernetwork inspect bridge# 默认 bridge 网络中容器只能通过 IP 互访不支持 DNS 解析容器名dockerexecapp2ping$(dockerinspect-f{{.NetworkSettings.IPAddress}}app1)端口映射-p 参数# 将容器 80 端口映射到宿主机 8080dockerrun-d--nameweb-p8080:80 nginx:alpine# 映射到指定 IPdockerrun-d--nameweb2-p127.0.0.1:8081:80 nginx:alpine# 查看端口映射dockerport web用户自定义 bridge 网络推荐生产使用自定义 bridge 网络相比默认 bridge 有两大优势容器名 DNS 解析和更好的隔离性。# 创建自定义 bridge 网络dockernetwork create\--driverbridge\--subnet172.20.0.0/16\--gateway172.20.0.1\myapp-network# 运行容器并连接到自定义网络dockerrun-d--namefrontend--networkmyapp-network nginx:alpinedockerrun-d--namebackend--networkmyapp-network python:3.11-alpine python3-mhttp.server8000# 自定义网络支持容器名 DNS 解析——直接 ping 容器名即可dockerexecfrontendpingbackenddockerexecfrontendwget-qO- http://backend:8000# 将已运行的容器动态连接/断开网络dockernetwork connect myapp-network some-existing-containerdockernetwork disconnect myapp-network some-existing-container查看网络详情dockernetworklsdockernetwork inspect myapp-network# 查看容器的网络配置dockerinspect--format{{json .NetworkSettings.Networks}}frontend|python3-mjson.tool模式二hosthost 模式下容器直接共享宿主机的网络命名空间没有网络隔离。容器中的服务监听的端口直接绑定在宿主机的网络接口上无需端口映射延迟极低。# 使用 host 网络运行容器dockerrun-d--namenginx-host--networkhostnginx:alpine# 此时 nginx 直接监听宿主机的 80 端口curlhttp://localhost:80# host 模式下 -p 参数无效直接用宿主机端口# 验证容器内看到的网络接口与宿主机完全一致dockerexecnginx-hostipaddr show适用场景需要最低网络延迟的应用如高性能代理、游戏服务器需要监听宿主机特定物理网卡的服务网络性能测试工具限制端口冲突若宿主机已占用某端口容器无法再监听该端口安全隔离性弱不推荐在多租户环境使用macOS 和 Windows 上的 Docker Desktop 不支持 host 模式模式三nonenone 模式为容器创建独立的网络命名空间但不配置任何网络接口除了 loopback。容器完全与外部网络隔离。# 运行完全无网络的容器dockerrun-d--nameisolated--networknone alpinesleep3600# 验证容器内只有 lo 接口dockerexecisolatedipaddr show# 输出只有 127.0.0.1/8# 无法访问外网dockerexecisolatedping8.8.8.8# ping: bad address 8.8.8.8适用场景安全沙盒运行不可信代码纯 CPU 密集型计算任务如编译、数据处理需要通过 volume 进行数据交换而不需要网络的任务模式四overlayoverlay 网络专为 Docker Swarm 多主机集群设计能让不同宿主机上的容器像在同一个局域网内通信无需手动配置路由。# 首先初始化 Swarm单节点也可测试dockerswarm init --advertise-addr$(hostname-I|awk{print $1})# 创建 overlay 网络dockernetwork create\--driveroverlay\--subnet10.0.9.0/24\myswarm-network# 在 Swarm 中创建服务使用 overlay 网络dockerservicecreate\--nameweb-service\--networkmyswarm-network\--replicas3\-p8080:80\nginx:alpine# 查看服务状态dockerservicelsdockerservicepsweb-service# 创建 attachable overlay 网络允许独立容器连接便于调试dockernetwork create\--driveroverlay\--attachable\--subnet10.0.10.0/24\debug-overlay# 在 attachable overlay 网络上运行独立容器dockerrun-d--namedebugger--networkdebug-overlay alpinesleep3600多主机集群加入# 在管理节点获取 worker 加入令牌dockerswarm join-token worker# 在 Worker 节点执行替换实际 token 和 IPdockerswarmjoin--tokenSWMTKN-1-xxxxx192.168.1.100:2377模式五macvlanmacvlan 允许容器拥有独立的 MAC 地址和 IP 地址直接接入物理网络就像一台独立的物理机。这是 IoT、裸机服务以及需要固定 IP 的场景的最佳选择。# 查看宿主机物理网卡名称iplinkshow# 假设物理网卡为 eth0子网为 192.168.1.0/24网关为 192.168.1.1# 创建 macvlan 网络dockernetwork create\--drivermacvlan\--subnet192.168.1.0/24\--gateway192.168.1.1\--optparenteth0\macvlan-net# 运行容器分配固定 IPdockerrun-d\--nameiot-device\--networkmacvlan-net\--ip192.168.1.150\alpinesleep3600# 验证容器获得了独立 IP可从局域网其他设备直接访问dockerexeciot-deviceipaddr showdockerexeciot-deviceiproute show# 宿主机访问 macvlan 容器需要创建 macvlan 子接口iplinkaddmacvlan-shimlinketh0typemacvlan mode bridgeipaddradd192.168.1.151/32 dev macvlan-shimiplinksetmacvlan-shim upiprouteadd192.168.1.150/32 dev macvlan-shim注意宿主机物理网卡需要开启混杂模式或交换机端口允许多 MAC 地址才能正常工作iplinkseteth0 promisc onDocker Compose 中的网络配置基础网络配置# docker-compose.ymlversion:3.9services:frontend:image:nginx:alpineports:-80:80networks:-frontend-netbackend:image:python:3.11-alpinecommand:python3-m http.server 8000networks:-frontend-net-backend-netdatabase:image:postgres:16-alpineenvironment:POSTGRES_PASSWORD:secretnetworks:-backend-net# 只在后端网络前端无法直接访问networks:frontend-net:driver:bridgeipam:config:-subnet:172.21.0.0/24backend-net:driver:bridgeipam:config:-subnet:172.22.0.0/24使用外部已有网络networks:shared-network:external:true# 使用已存在的网络不由 Compose 创建/销毁name:myapp-networkhost 和 none 模式的 Compose 配置services:high-perf-proxy:image:haproxy:latestnetwork_mode:host# 使用 host 网络sandbox-job:image:python:3.11network_mode:none# 完全无网络command:python3 /scripts/compute.py实战演示多容器应用的网络隔离最佳实践以下是一个典型的三层应用前端、后端 API、数据库的网络隔离方案# docker-compose.prod.ymlversion:3.9services:nginx:image:nginx:alpineports:-443:443-80:80networks:-public-netdepends_on:-apiapi:image:myapp-api:latestnetworks:-public-net# 接收来自 nginx 的流量-private-net# 访问数据库environment:DB_HOST:postgres# 通过容器名 DNS 解析REDIS_HOST:redispostgres:image:postgres:16-alpinenetworks:-private-net# 仅在私有网络外部无法直接访问volumes:-pg-data:/var/lib/postgresql/dataredis:image:redis:7-alpinenetworks:-private-netnetworks:public-net:driver:bridgeprivate-net:driver:bridgeinternal:true# 禁止访问外网纯内部通信网络volumes:pg-data:网络排查常用命令速查# 查看网络 dockernetworkls# 列出所有网络dockernetwork inspectnetwork-name# 查看网络详情含所有容器 IPdockerinspectcontainer|grep-A20Networks# 查看容器网络配置# 连通性测试 dockerexeccontainerpingtarget-ip# ping 测试dockerexeccontainerpingcontainer-name# DNS 解析 pingdockerexeccontainerwget-qO- http://host:port# HTTP 连通测试dockerexeccontainernc-zvhostport# TCP 端口测试# 网络状态 dockerexeccontaineripaddr show# 查看网卡和 IPdockerexeccontaineriproute show# 查看路由表dockerexeccontainerss-tlnp# 查看监听端口替代 netstatdockerexeccontainercat/etc/resolv.conf# 查看 DNS 配置# 宿主机侧排查 iplinkshow# 查看所有网络接口含 docker0、veth 等bridgelinkshow# 查看 bridge 上连接的 veth 接口iptables-tnat-L-n-v# 查看 Docker 配置的 NAT 规则iptables-LDOCKER-n-v# 查看 Docker 防火墙规则# 清理 dockernetwork prune# 删除所有未使用的网络dockernetworkrmnetwork-name# 删除指定网络常见问题与解决Q自定义 bridge 网络的容器为何无法解析容器名确认容器是否连接到了同一个自定义网络不是默认的bridge。默认bridge网络不支持容器名 DNS只有用户自定义网络才支持。Qmacvlan 容器无法与宿主机通信这是 macvlan 的内核限制。解决方法是在宿主机上创建 macvlan 子接口见上文配置通过该接口与容器通信。Qoverlay 网络创建报错This node is not a swarm manager需要先执行docker swarm init初始化 Swarmoverlay 网络依赖 Swarm 的 key-value 存储。Docker 网络模式各有适用场景日常开发用自定义 bridge高性能场景考虑 host安全隔离用 none集群部署选 overlay物理网络集成用 macvlan。掌握这 5 种模式能让你的容器化架构更加灵活和安全。如果你还没有合适的服务器环境来练习推荐注册雨云服务器 rainyuncom选择2 核 4GB 机型注册填码2026off领 5 折券立即开始你的 Docker 网络实战之旅。

相关文章:

Docker 网络模式详解:bridge、host、overlay 和 macvlan

Docker 网络模式详解:bridge、host、overlay 和 macvlan Docker 提供了多种网络模式,让容器既能灵活通信,又能实现安全隔离。无论是单机多容器应用,还是跨主机的 Swarm 集群,亦或需要直接接入物理网络的 IoT 设备&…...

从VS2019调试到IIS部署:一个.NET Core Web API的‘完整旅程’与避坑实录

从VS2019调试到IIS部署:一个.NET Core Web API的‘完整旅程’与避坑实录 当第一次尝试将.NET Core Web API从开发环境部署到生产服务器时,许多开发者都会遇到各种预料之外的挑战。本文将以第一人称视角,详细记录我从零开始创建项目、本地调试…...

Apollo2 BLE自定义服务开发指南:GATT数据库配置与回调实现

1. 项目概述与核心价值最近在折腾一个基于Apollo2 Blue的低功耗蓝牙项目,需要自定义一个服务(Service)来实现特定的数据交互功能。如果你也在用Ambiq Micro的Apollo2或Apollo3 Blue系列芯片做BLE开发,大概率会遇到类似的需求&…...

深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率

深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率 【免费下载链接】sacrebleu Reference BLEU implementation that auto-downloads test sets and reports a version string to facilitate cross-lab comparisons 项目地址: https://gitcode.com/gh_mirrors/s…...

终极免费Windows音频调校指南:用Equalizer APO解锁专业音质

终极免费Windows音频调校指南:用Equalizer APO解锁专业音质 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 你是否对电脑的音质总是不满意?无论是听音乐、看电影还是玩游戏&…...

NCM解密终极指南:3步解锁网易云音乐加密文件

NCM解密终极指南:3步解锁网易云音乐加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲,却发现只能在官方客户端播放,无法在其他设备或播放器上欣赏&…...

如何快速提升Windows性能:终极系统优化完整指南

如何快速提升Windows性能:终极系统优化完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...

LaTeX documentclass命令深度解析:从基础语法到高级定制

1. LaTeX documentclass命令入门指南 第一次接触LaTeX时,我盯着那个神秘的\documentclass命令发呆了半小时。这个看似简单的命令,实际上掌控着整个文档的"基因"。就像盖房子前要确定是建公寓楼还是独栋别墅,documentclass决定了文档…...

如何用Nucleus Co-Op将单机游戏变身为本地多人派对游戏

如何用Nucleus Co-Op将单机游戏变身为本地多人派对游戏 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾经羡慕那些支持本地多人游戏的乐趣…...

WebPlotDigitizer完整指南:5步从图表图像中智能提取数据,科研效率提升90%

WebPlotDigitizer完整指南:5步从图表图像中智能提取数据,科研效率提升90% 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigit…...

ImageToSTL:将二维图片转化为可打印三维模型的艺术

ImageToSTL:将二维图片转化为可打印三维模型的艺术 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项…...

免费扩展Windows虚拟显示器:5分钟打造高效多屏工作空间

免费扩展Windows虚拟显示器:5分钟打造高效多屏工作空间 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: https://gitco…...

Illustrator智能替换工具:如何让批量设计工作变得轻松高效

Illustrator智能替换工具:如何让批量设计工作变得轻松高效 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾经面对过这样的场景:客户要求将50个物料中…...

【生产力跃升】Claude Code v2.1.143:允许禁用工作树隔离,插件依赖链强制执行与后台 Agent 补强

前言作为一款工业级的 AI 编程助手,Claude Code 的高频迭代一直在解决复杂工程中的痛点。在最新的 v2.1.143 版本中,开发团队带来了一项重磅底层配置:允许关闭后台 Agent 的 Git 工作树(Worktree)隔离。此外&#xff0…...

保姆级教程 | Gaussian优化后的能量值

背景Gaussian优化后会获得很多能量,应该如何区别这些能量的差异性步骤1. 电子能(纯 SCF 能量,无热修正):单点能、对比电子结构、不加热效应grep Done 文件名.log这是纯电子能量,只包含电子结构,…...

从STM32到STC32G:LCM模块驱动8080接口TFT屏的移植实战

1. 硬件平台迁移的背景与挑战 最近在做一个嵌入式项目时,遇到一个典型场景:手头有一套在STM32上运行良好的TFT液晶屏驱动代码,但客户要求改用STC32G系列MCU。这种硬件平台迁移在嵌入式开发中很常见,特别是当项目需要考虑成本优化时…...

昇思大模型预训练数据来源

昇思 MindSpore 大模型(如鹏程・盘古、Qwen、Skywork 等)的预训练数据以中文为核心、多源异构融合、高质量过滤为特点,依托开源数据、互联网爬虫、电子书与领域数据构建,经分布式清洗、去重、过滤后形成百亿至千亿级 Token 的训练…...

任天堂Switch游戏备份终极指南:nxdumptool完全解析

任天堂Switch游戏备份终极指南:nxdumptool完全解析 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/gh_mirrors/nx/nxd…...

Vue3后台管理系统终极指南:V3 Admin Vite 5.0快速上手教程

Vue3后台管理系统终极指南:V3 Admin Vite 5.0快速上手教程 【免费下载链接】v3-admin-vite ☀️ A crafted Vue3 admin template | Vue Admin | Vue Template | Vue3 Admin | Vue3 Template | Vue 后台 | Vue 模板 | Vue3 后台 | Vue3 模板 项目地址: https://git…...

NoFences:重新定义Windows桌面管理的开源革命

NoFences:重新定义Windows桌面管理的开源革命 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否也曾为杂乱无章的Windows桌面而烦恼?图标散落各处…...

Perplexity图标资源搜索私藏库曝光:内部团队未开放的8类高保真SVG图标源及授权合规对照表

更多请点击: https://intelliparadigm.com 第一章:Perplexity图标资源搜索 Perplexity AI 官方未提供公开的图标资源包(如 SVG、Favicon 或 App Icon 套件),但开发者可通过合法合规方式获取其品牌视觉资产用于技术文档…...

Taotoken的用量看板如何帮助团队清晰管理AI模型调用成本

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的用量看板如何帮助团队清晰管理AI模型调用成本 作为团队的技术负责人,我的一项重要职责是确保技术投入的每一…...

为什么你的Perplexity图标总返回404?深度逆向其图标CDN路由算法(附Python自动化探测脚本)

更多请点击: https://intelliparadigm.com 第一章:Perplexity图标资源搜索 Perplexity AI 官方未提供公开的图标资源包(如 SVG、Favicon 或 App Icon 套件),但开发者可通过合法合规方式获取其品牌视觉资产用于技术文档…...

观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细 对于依赖大模型API进行开发的团队而言,成本透明与资源…...

Overleaf实战:手把手教你用LaTeX制作符合A4排版要求的跨页长表格(含完整代码)

Overleaf实战:LaTeX跨页长表格的终极解决方案 当你正在撰写一篇包含大量数据的学术论文或技术手册时,那些横跨多页的表格往往会成为格式噩梦。表格在页面底部被生硬截断,表头在后续页面消失,页码引用混乱——这些问题不仅影响阅读…...

轻松解包网易游戏资源:unnpk工具完整使用指南

轻松解包网易游戏资源:unnpk工具完整使用指南 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件,如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 想要探索网易游戏如《阴阳师》、《魔法禁书目录》中的精美角色立…...

LinuxCNC新手到专家:5个步骤打造你的完美数控系统

LinuxCNC新手到专家:5个步骤打造你的完美数控系统 【免费下载链接】linuxcnc LinuxCNC controls CNC machines. It can drive milling machines, lathes, 3d printers, laser cutters, plasma cutters, robot arms, hexapods, and more. 项目地址: https://gitcod…...

Univer开源项目部署完整指南:从零到生产环境

Univer开源项目部署完整指南:从零到生产环境 【免费下载链接】univer Build AI-native spreadsheets. Univer is a full-stack framework for creating and editing spreadsheets on both web and server. With Univer Platform, Univer Spreadsheets is driven dir…...

STC32G单片机开发实战:GPIO模式配置与寄存器详解

1. STC32G单片机GPIO基础认知 第一次拿到STC32G开发板时,我习惯性地想用STM32那套HAL库来操作GPIO,结果发现根本行不通。这就像拿着汽车钥匙去开保险箱,虽然都是"开锁",但机制完全不同。STC32G作为增强型8051架构单片机…...

Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据)

更多请点击: https://kaifayun.com 第一章:Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据) Perplexity 作为面向研究与教育场景的AI原生搜索引擎,其语义理解深度与引用溯源能力显著…...