【Docker】网络介绍
【Docker】网络介绍【一】底层核心原理1. Linux 底层支撑技术2. 数据流转简单流程桥接模式默认【二】Docker 内置 5 种网络驱动1. bridge 默认网桥docker02. 自定义 bridge生产首选3. host 主机网络4. none 无网络5. container 复用容器网络【三】网络常用操作创建、查看、连接、删除1. 查看所有网络2. 创建自定义网桥重点3. 启动容器时指定网络方式 1创建容器直接加入自定义网络方式 2host 主机网络方式 3none 无网络方式 4复用其他容器网络4. 容器运行后动态连接 / 断开网络5. 删除网络【四】端口映射原理-p1. 两种写法底层原理【五】不指定 --network 时默认行为1底层环境2完整场景演示3生产环境结论【六】容器间通信规则【七】跨主机 Docker 网络Overlay简单补充【八】生产最佳实践总结【一】底层核心原理1. Linux 底层支撑技术Docker 网络完全基于 Linux 内核四大技术实现Network Namespace网络命名空间内核隔离技术每个容器拥有独立网络栈独立网卡、IP、路由表、iptables、端口、DNS。容器与宿主机、其他容器网络默认隔离相当于一台独立虚拟机网络环境。veth pair虚拟网线一对成对虚拟网卡一端宿主机网桥一端容器 namespace实现宿主机 ↔ 容器数据互通。Linux Bridge虚拟网桥宿主机虚拟交换机多个 veth 网卡挂载到网桥同网桥下容器二层互通。iptables / netfilter端口映射、SNAT/DNAT、访问控制、内外网转发、隔离策略全部依靠 iptables 规则实现。路由转发 ip_forward宿主机开启内核转发容器才能访问外网。2. 数据流转简单流程桥接模式默认容器内程序发包 → 容器内 eth0veth 一端通过 veth pair 转发到宿主机网桥 docker0网桥转发给同网络其他容器 / 交给宿主机网卡访问外网时 iptables 做 SNAT 源地址转换走宿主机物理网卡出去外部访问容器端口iptables DNAT 转发流量到容器内部 IP 端口【二】Docker 内置 5 种网络驱动执行docker network ls可查看默认网络表格网络类型驱动用途默认创建桥接网络bridge单机容器互通最常用自动创建bridgedocker0主机网络host容器共享宿主机网卡无隔离不默认创建手动使用无网络none容器完全禁用网络隔离自动创建none容器互联container复用另一个容器网络栈无需提前创建运行时指定自定义网桥bridge推荐生产使用自定义网段、DNS、隔离分组手动docker network create创建1. bridge 默认网桥docker0宿主机开机启动 docker 自动创建虚拟网桥 docker0网段默认172.17.0.0/16不指定网络的容器默认接入 docker0同 docker0 容器之间可以通过容器名 / IP 互相访问外部访问容器需要-p 宿主机端口:容器端口端口映射缺点多项目容器混在同一网段无隔离无法自定义网段复杂环境混乱。生产不建议直接用默认 docker0推荐自定义 bridge。2. 自定义 bridge生产首选和默认 bridge 原理一致但支持自定义网段、子网、网关、标签实现项目网络隔离。同一自定义网络内容器可直接用容器名称互相解析访问跨自定义网络默认不通。3. host 主机网络容器不创建独立 network namespace直接复用宿主机物理网卡、IP、端口。优势无端口转发损耗性能极高缺点无网络隔离容器直接占用宿主机端口多服务端口冲突风险大无法端口映射-p失效适用高性能中间件如 k8s node、监控采集、网关4. none 无网络容器只有 lo 本地回环网卡无任何外部网络完全隔离。适用纯本地计算、安全离线任务。5. container 复用容器网络新容器共享已有容器的 network namespace共用同一张网卡、同一个 IP。用法--network container:容器ID/名称适用sidecar 边车容器日志采集、监控代理和主容器共享网络。【三】网络常用操作创建、查看、连接、删除1. 查看所有网络docker network ls # 查看网络详情网段、挂载容器、配置 docker network inspect 网络名/ID2. 创建自定义网桥重点基础语法docker network create [参数] 网络名称常用参数--subnet自定义子网网段--gateway网关地址--driver bridge指定网桥驱动默认-d overlay跨主机集群网络Swarm--attachable允许容器后期动态接入网络示例创建业务专属网络 app-net# 指定网段 172.20.0.0/16网关172.20.0.1 docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 app-net3. 启动容器时指定网络方式 1创建容器直接加入自定义网络# 容器web加入app-net映射8080端口 docker run -d --name web --network app-net -p 8080:80 nginx # mysql 同网络和web互通 docker run -d --name mysql --network app-net -e MYSQL_ROOT_PASSWORD123456 mysql:5.7此时 web 容器可直接用mysql作为域名连接数据库Docker 内置 DNS 自动解析容器名。方式 2host 主机网络# 共享宿主机网络无需-p端口映射 docker run -d --name agent --network host prom/node-exporter方式 3none 无网络docker run -it --name offline --network none centos方式 4复用其他容器网络# 复用web容器网络栈 docker run -it --name sidecar --network container:web busybox4. 容器运行后动态连接 / 断开网络容器启动后可以中途加入其他网络实现跨网络互通# 将已存在容器连接到指定网络 docker network connect app-net web # 断开容器与网络 docker network disconnect app-net web5. 删除网络# 删除闲置网络无容器挂载才能删除 docker network rm app-net # 清理所有未使用网络 docker network prune【四】端口映射原理-p1. 两种写法# 宿主机所有网卡 8080 → 容器80 -p 8080:80 # 指定宿主机IP 192.168.1.100:8080 → 容器80 -p 192.168.1.100:8080:80 # 随机宿主机端口映射容器80 -p :80底层原理Docker 自动在宿主机 iptables 添加 DNAT 规则外部请求访问宿主机 IP:8080 → iptables 转发到容器内部 IP:80容器回包时做 SNAT修改源地址为宿主机网桥地址host 网络模式不经过端口映射直接监听宿主机端口【五】不指定 --network 时默认行为执行docker run不加--network xxx容器会自动接入 Docker 默认网桥bridge宿主机虚拟网卡 docker0。1底层环境自动分配172.17.0.0/16网段内一个空闲 IP网关为172.17.0.1docker0 网桥地址自动创建一对 veth pair 虚拟网卡一端挂 docker0一端进容器网络命名空间容器拥有独立网络栈和宿主机、其他容器隔离。1能做什么同属默认 bridge 的容器可以互通所有没指定自定义网络的容器都在 docker0 网段互相之间可以通过容器 IP 访问。容器能访问外网Docker 自动配置 iptables SNAT 规则容器流量经过宿主机转发访问互联网。宿主机可以访问容器只要启动时加-p 宿主机端口:容器端口做端口映射外部 / 宿主机就能访问容器服务。宿主机内部可直接 ping 容器内部 IP。2关键限制和自定义 bridge 最大区别默认 bridge 不支持 Docker DNS 容器名解析这是最核心痛点自定义 bridge同网络容器可以直接用容器名称互相访问如curl nginx默认 docker0 bridge只能用 IP 访问容器名无法解析。示例# 两个容器都不指定网络都在默认bridgedockerrun-d--nameng nginxdockerrun-it--namebus busybox# bus 里 ping ng 会失败域名解析失败pingng# 只能 ping ng 的容器IP才能通3无法和自定义 bridge 网络互通假设A 容器未指定网络 → 默认 bridge (docker0)B 容器加入自定义网络 app-net两者默认完全隔离互相 ping 不通。想要互通只能手动执行dockernetwork connect bridge B容器名# 或dockernetwork connect app-net A容器名4网段不可自定义默认网段固定172.17.0.0/16不能修改子网、网关多业务混在一起无网络隔离容易 IP 冲突、维护混乱。5无业务分组隔离所有不指定网络的容器挤在同一个大网段测试、预发、业务容器混在一起安全边界模糊。2完整场景演示# 容器1不指定网络进默认bridgedockerrun-d--nameweb nginx# 容器2不指定网络同默认bridgedockerrun-it--nametestbusybox# 1. test ping web IP 能通# 2. test ping web 容器名 解析失败# 3. 新建一个自定义网络容器 mysqltest 和 mysql 互相不通3生产环境结论本地临时测试、一次性容器可以不指定网络省事正式业务服务必须创建自定义 bridge 并手动 --network 指定支持容器名称 DNS 互通业务网络隔离可自定义网段、网关方便权限、访问控制分组。【六】容器间通信规则同一自定义 bridge 网络容器之间互通Docker DNS 解析容器名称直接使用容器名访问无需 IP。不同自定义 bridge 网络默认隔离互相不通如需互通用docker network connect将容器加入对方网络。默认 docker0 网桥容器同网段互通但无法和自定义 bridge 容器互通。host 模式容器可直接访问宿主机所有服务、所有网段容器。none 网络只能访问自身 127.0.0.1无法和任何外部通信。【七】跨主机 Docker 网络Overlay简单补充前面所有 bridge 仅限单台宿主机容器互通多台服务器容器互通使用overlay驱动依赖 Docker Swarm初始化 swarm 集群docker swarm init创建 overlay 网络docker network create -d overlay swarm-net不同节点容器加入 swarm-net 即可跨服务器通信底层基于 VXLAN 隧道技术封装 UDP 数据包跨物理主机传输。【八】生产最佳实践总结禁止直接使用默认 docker0每个业务项目单独创建自定义 bridge 网络实现环境隔离所有业务容器统一加入同一张自定义网络利用容器名 DNS 互通无需写死 IP数据库、中间件容器不暴露外网端口仅同网络业务容器访问提升安全高性能采集组件使用host网络普通 web / 数据库使用自定义 bridge离线计算类容器使用none网络缩小攻击面禁止容器以 roothost 网络运行对外服务风险极高。

相关新闻

【GraphRAG+Neo4j +TRAE】零代码打造基于知识图谱的本地知识库,实现知识图谱可视化

【GraphRAG+Neo4j +TRAE】零代码打造基于知识图谱的本地知识库,实现知识图谱可视化

一、项目概述 项目名称:GraphRAG知识图谱可视化——以《红楼梦》为测试文本 核心目标:利用知识图谱中的结构化关系信息,辅助模型更精准地理解查询意图,并在海量数据中找到最相关的信息进行生成。 🧠技术原理&#x…

2026/7/17 1:10:06阅读更多 →
RAG 技术原理——常见文档分片方式

RAG 技术原理——常见文档分片方式

RAG 系统的性能瓶颈往往藏在一个容易被跳过的地方——embedding 模型没问题,LLM 推理也没问题,但检索结果就是不准。问题出在文档怎么切。 切得太碎,一段话被拆成三截,语义断了。切得太大,一篇 5000 字的文章塞进一个…

2026/7/17 1:10:06阅读更多 →
什么是谷歌SEO?从0到1带你拆解价值百万的独立站流量密码!

什么是谷歌SEO?从0到1带你拆解价值百万的独立站流量密码!

在做海外市场、跨境电商或者个人独立站的朋友,你一定听过这样一个词:谷歌 SEO。 很多人一听到“SEO”这种技术词汇就头大,觉得这是程序员才懂的神秘代码。但实际上,SEO 是一门高级的“用户心理学”和“内容编排术”。 如果你不想…

2026/7/17 1:05:06阅读更多 →
txtai:全功能AI框架的语义搜索与LLM编排实践指南

txtai:全功能AI框架的语义搜索与LLM编排实践指南

今天来看一个功能强大的AI框架——txtai。这个由NeuML开源的项目在GitHub上已经获得了12.7k星,是一个集成了语义搜索、LLM编排和语言模型工作流的全功能AI框架。txtai的核心是一个嵌入数据库,它结合了向量索引(稀疏和密集)、图网络…

2026/7/17 2:15:11阅读更多 →
Ubuntu安装搜狗输入法全攻略

Ubuntu安装搜狗输入法全攻略

1. Ubuntu下安装搜狗输入法全指南在Linux桌面环境中,中文输入一直是用户关注的焦点问题。作为国内最受欢迎的中文输入法之一,搜狗输入法Linux版凭借其词库丰富、智能联想和云输入等特性,成为Ubuntu用户的首选。不同于Windows下的即装即用&…

2026/7/17 2:15:11阅读更多 →
LIS2DH12加速度传感器驱动工程包:支持I2C/SPI、含寄存器封装与原始数据读取示例

LIS2DH12加速度传感器驱动工程包:支持I2C/SPI、含寄存器封装与原始数据读取示例

本文还有配套的精品资源,点击获取 简介:LIS2DH12三轴加速度计的轻量级驱动工程,包含标准C编写的底层寄存器操作文件lis2dh12_reg.c和lis2dh12_reg.h,覆盖初始化、中断配置、模式设置等基础功能;read_data_simple.c提…

2026/7/17 2:15:11阅读更多 →
SpringBoot短链服务源码:支持自定义过期时间+实时访问统计

SpringBoot短链服务源码:支持自定义过期时间+实时访问统计

本文还有配套的精品资源,点击获取 简介:一套开箱即用的SpringBoot短链接系统,能将长URL快速生成简洁短链,点击后自动302跳转到原地址。短链创建时可选永久有效或设置具体过期天数,到期后自动失效不再跳转。每次用户…

2026/7/17 2:15:11阅读更多 →
MATLAB/Simulink电机控制代码生成实战指南

MATLAB/Simulink电机控制代码生成实战指南

1. 从零开始理解MATLAB/Simulink电机控制代码生成电机控制领域正在经历一场工具链革命——传统的手写代码逐渐被模型化设计替代。作为工程师,我们常遇到这样的困境:算法仿真完美,但移植到硬件时却要重写整个控制逻辑。MATLAB/Simulink的代码生…

2026/7/17 2:15:11阅读更多 →
冲锋衣技术参数全解析:防水透气原理与户外工作装备选购指南

冲锋衣技术参数全解析:防水透气原理与户外工作装备选购指南

最近天气越来越热,户外活动也多了起来。作为一名经常需要外出测试设备的开发者,我发现夏季户外装备的选择直接影响工作效率和舒适度。特别是冲锋衣这种看似简单的装备,其实蕴含着不少技术细节。本文将围绕户外装备的技术参数、功能设计和实际…

2026/7/17 2:10:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →