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

第四部分-Docker网络与存储——18. 自定义网络

18. 自定义网络1. 自定义网络概述自定义网络允许用户根据需求创建具有特定配置的网络相比默认的 bridge 网络提供了更好的隔离性、DNS 解析和灵活性。┌─────────────────────────────────────────────────────────────┐ │ 自定义网络架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ mynet (自定义) │ │ │ │ 10.10.0.0/16 │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ web-app │ │ api-app │ │ db-app │ │ │ │ │ │10.10.0.2│ │10.10.0.3│ │10.10.0.4│ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ │ │ │ │ └────────────┼────────────┘ │ │ │ │ │ │ │ │ │ 自动 DNS 解析 │ │ │ │ web-app → api-app → db-app │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘2. 创建自定义网络2.1 基础创建# 创建 bridge 类型网络dockernetwork create mynet# 指定 IP 地址范围dockernetwork create--driverbridge--subnet10.10.0.0/16--gateway10.10.0.1 mynet# 指定 IP 范围dockernetwork create--subnet10.10.0.0/16 --ip-range10.10.1.0/24 mynet# 指定网络驱动dockernetwork create--driverbridge--optcom.docker.network.bridge.namemy_bridge mynet# 查看网络dockernetworklsdockernetwork inspect mynet2.2 网络选项配置# 禁用 IPv6dockernetwork create--ipv6false mynet# 启用 IPv6dockernetwork create--ipv6--subnet2001:db8::/64 mynet# 设置 MTUdockernetwork create--optcom.docker.network.driver.mtu1450mynet# 设置网桥名称dockernetwork create--optcom.docker.network.bridge.namemy_bridge mynet# 启用 iptablesdockernetwork create--optcom.docker.network.bridge.enable_ip_masqueradetrue mynet3. 使用自定义网络3.1 运行容器# 创建网络dockernetwork create app-net# 在自定义网络中运行容器dockerrun-d--nameweb--networkapp-net nginxdockerrun-d--nameapi--networkapp-net myapidockerrun-d--namedb--networkapp-net mysql# 通过容器名通信dockerexecwebpingapidockerexecwebpingdb# 指定 IP 地址dockerrun-d--networkapp-net--ip10.10.0.100 nginx3.2 连接现有容器# 将现有容器连接到网络dockernetwork connect app-net existing-container# 断开连接dockernetwork disconnect app-net existing-container# 指定连接时的 IPdockernetwork connect--ip10.10.0.200 app-net existing-container# 查看容器连接的网络dockerinspect container_name|grep-A10Networks4. 网络隔离4.1 多网络隔离# 创建不同的网络隔离环境dockernetwork create frontenddockernetwork create backenddockernetwork create database# 前端应用只连接前端网络dockerrun-d--nameweb--networkfrontend nginx# API 同时连接前端和后端dockerrun-d--nameapi--networkfrontend--networkbackend myapi# 数据库只连接后端dockerrun-d--namedb--networkbackend mysql# 通信路径# web → api (通过 frontend)# api → db (通过 backend)# web 无法直接访问 db4.2 网络访问控制# 创建隔离网络dockernetwork create--internalinternal-net# 内部网络无外网访问权限dockerrun-d--nameinternal-app--networkinternal-net myapp# 无法访问外网dockerexecinternal-apppinggoogle.com# 失败# 通过代理容器访问外网dockerrun-d--nameproxy--networkinternal-net--networkbridge myproxy5. 高级配置5.1 自定义网关# 创建网络指定网关dockernetwork create\--subnet172.20.0.0/16\--gateway172.20.0.1\mynet# 创建辅助网络dockernetwork create\--subnet172.21.0.0/16\--gateway172.21.0.1\mynet25.2 网络别名# 创建网络dockernetwork create mynet# 运行容器并添加别名dockerrun-d--namedb--networkmynet --network-alias mysql --network-alias database mysql# 其他容器可以通过别名访问dockerrun--rm--networkmynet alpinepingmysqldockerrun--rm--networkmynet alpinepingdatabase# 添加额外的别名到运行中的容器dockernetwork connect--aliasprimary-db mynet db6. 网络驱动6.1 Bridge 驱动# 默认驱动单机使用dockernetwork create--driverbridge mynet# 带选项的 bridgedockernetwork create\--driverbridge\--optcom.docker.network.bridge.namemy_bridge\--optcom.docker.network.bridge.enable_icctrue\--optcom.docker.network.bridge.enable_ip_masqueradetrue\--optcom.docker.network.bridge.host_binding_ipv40.0.0.0\mynet6.2 Overlay 驱动Swarm# 跨主机网络需要 Swarm 模式dockernetwork create--driveroverlay--attachablemy-overlaydockerservicecreate--networkmy-overlay--nameweb nginx6.3 Macvlan 驱动# 直接使用物理网络dockernetwork create-dmacvlan\--subnet192.168.1.0/24\--gateway192.168.1.1\-oparenteth0\macnet7. 网络管理7.1 查看网络# 列出所有网络dockernetworkls# 查看网络详情dockernetwork inspect mynet# 查看网络连接的容器dockernetwork inspect mynet--format{{range .Containers}}{{.Name}} {{.IPv4Address}}{{\n}}{{end}}# 查看网络的使用情况dockernetworkls--formattable {{.Name}}\t{{.Driver}}\t{{.Scope}}7.2 清理网络# 删除网络dockernetworkrmmynet# 清理未使用的网络dockernetwork prune# 强制清理dockernetwork prune-f# 清理特定标签的网络dockernetwork prune--filteruntil24h8. DNS 配置8.1 自定义 DNS# 创建网络时指定 DNSdockernetwork create\--dns8.8.8.8\--dns8.8.4.4\--dns-search example.com\mynet# 在容器中指定 DNSdockerrun-d--dns8.8.8.8 --dns-search example.com nginx8.2 容器名解析# 自定义网络支持自动 DNS 解析# 容器名指向容器 IP# 网络别名也支持解析# 测试解析dockerrun--rm--networkmynet alpinenslookupwebdockerrun--rm--networkmynet alpinedigapi9. 网络调试9.1 网络诊断工具# 创建带网络工具的容器dockerrun-it--networkmynet--namenet-tools alpinesh# 安装网络工具apkaddiproute2curlbusybox-extras# 测试连接ipaddriproutepingwebcurlapi:8080traceroutedb9.2 网络故障排查# 检查网络配置dockernetwork inspect mynet# 检查容器连接dockerinspect container_name|grep-A10Networks# 测试网络连通性dockerexeccontainer_nameping-c3target-containerdockerexeccontainer_namecurl-vhttp://target-container:port# 查看 iptables 规则sudoiptables-L-n-vsudoiptables-tnat-LDOCKER-n-v10. 实战示例10.1 三层应用架构# 创建三个网络dockernetwork create frontenddockernetwork create backenddockernetwork create database# 前端层只能访问前端网络dockerrun-d--nameweb\--networkfrontend\nginx# 应用层连接前后端dockerrun-d--nameapi\--networkfrontend\--networkbackend\myapi# 数据层只能被后端访问dockerrun-d--namedb\--networkbackend\-eMYSQL_ROOT_PASSWORD123\mysql# 验证通信dockerexecwebpingapi# 成功dockerexecwebpingdb# 失败隔离dockerexecapipingdb# 成功10.2 网络模板# 创建网络模板脚本dockernetwork create\--driverbridge\--subnet10.10.${ENV}.0/24\--gateway10.10.${ENV}.1\--labelenvironment${ENV}\--labelproject${PROJECT}\${PROJECT}-${ENV}11. 命令速查操作命令创建网络docker network create列出网络docker network ls查看详情docker network inspect连接容器docker network connect断开容器docker network disconnect删除网络docker network rm清理网络docker network prune12. 最佳实践✅ 推荐做法使用自定义网络而非默认 bridge合理规划 IP 地址段避免冲突使用网络隔离提高安全性为网络添加标签便于管理定期清理未使用网络生产环境指定 IP 范围❌ 避免事项在生产环境使用默认 bridge网络段与宿主机网络冲突创建过多未使用网络忽略网络 MTU 设置在 bridge 网络上依赖 --link13. 常见问题Q1: 如何删除正在使用的网络先断开所有连接的容器或强制删除需停止相关容器。Q2: 自定义网络和默认 bridge 的区别自定义网络支持容器名自动 DNS 解析默认 bridge 不支持。Q3: 容器启动后能更改网络吗可以使用docker network connect/disconnect。14. 小结自定义网络提供更好的隔离性和灵活性支持自定义 IP 范围、网关、DNS自动 DNS 解析容器名可以实现网络隔离类 VLAN支持容器动态连接/断开网络一个容器可连接到多个网络定期清理未使用网络

相关文章:

第四部分-Docker网络与存储——18. 自定义网络

18. 自定义网络 1. 自定义网络概述 自定义网络允许用户根据需求创建具有特定配置的网络,相比默认的 bridge 网络,提供了更好的隔离性、DNS 解析和灵活性。 ┌────────────────────────────────────────────…...

局域网文件传输终极指南:3步实现跨平台文件秒传

局域网文件传输终极指南:3步实现跨平台文件秒传 【免费下载链接】LAN-Share Cross platform LAN File transfer application built with Qt C framework 项目地址: https://gitcode.com/gh_mirrors/la/LAN-Share 还在为电脑间传文件而烦恼吗?U盘太…...

Xplorer文件属性查看器:全面掌控文件信息的终极指南

Xplorer文件属性查看器:全面掌控文件信息的终极指南 【免费下载链接】xplorer Xplorer, a customizable, modern file manager 项目地址: https://gitcode.com/gh_mirrors/xp/xplorer 在日常文件管理中,你是否经常需要快速查看文件的详细信息&…...

NVIDIA Profile Inspector深度指南:解锁显卡隐藏性能的完整教程

NVIDIA Profile Inspector深度指南:解锁显卡隐藏性能的完整教程 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏画面撕裂、输入延迟高、帧率不稳定而烦恼吗?NVIDIA Pr…...

终极指南:八大网盘直链下载助手完整使用教程,告别限速烦恼

终极指南:八大网盘直链下载助手完整使用教程,告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...

网盘直链下载助手完整教程:告别限速,解锁九大网盘真实下载链接

网盘直链下载助手完整教程:告别限速,解锁九大网盘真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...

基于RAG与LangChain的法律AI助手:从技术原理到开源实践

1. 项目概述:当AI遇上法律,一个开源法律智能助手的诞生最近几年,AI大模型的热潮席卷了各行各业,从写代码到画图,从客服到教育,似乎没有哪个领域能置身事外。作为一名在技术圈摸爬滚打多年的从业者&#xff…...

Go语言网络监控利器wiremonitor:轻量级命令行抓包与流量分析实战

1. 项目概述:一个网络流量监控的瑞士军刀如果你和我一样,经常需要和网络协议、数据包打交道,无论是排查一个诡异的API超时,还是想搞清楚某个应用到底在后台和哪些服务器“窃窃私语”,你肯定知道抓包工具的重要性。Wire…...

AI编程代理全景导航:从技术选型到实战评估指南

1. 项目概述:一个探索智能编码代理的“藏宝图”最近在GitHub上闲逛,发现了一个挺有意思的项目,叫tndata/CodingAgentExplorer。光看名字,你可能会觉得这又是一个关于AI代码生成或者大语言模型(LLM)的常规仓…...

基于Claude 3微调的代码大模型:原理、应用与最佳实践

1. 项目概述:一个专为Claude设计的代码仓库最近在折腾AI编程助手的时候,发现了一个挺有意思的项目,叫claude-code。这名字听起来就挺直白的,对吧?简单来说,它就是一个专门为Anthropic家的Claude模型&#x…...

AMD Ryzen终极调试指南:5分钟掌握SMUDebugTool核心调校技巧

AMD Ryzen终极调试指南:5分钟掌握SMUDebugTool核心调校技巧 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https…...

2026AI急救点合规生死线:GDPR+《人工智能医疗应用管理办法》双轨审计 checklist(仅限首批参会者获取)

更多请点击: https://intelliparadigm.com 第一章:2026AI急救点合规性定义与时代紧迫性 2026AI急救点(AI Emergency Point, AIEP)并非传统意义上的物理站点,而是由国家AI治理框架强制要求部署的、具备实时风险拦截、模…...

ghpm:GitHub仓库包管理器,一键安装管理开源工具

1. 项目概述:一个为GitHub仓库量身打造的包管理器如果你和我一样,日常开发中重度依赖GitHub,那你肯定遇到过这样的场景:看到一个非常棒的仓库,想把它当成一个“包”或者“工具”安装到本地,或者集成到自己的…...

85个实用UserScript脚本:提升浏览器效率与网页交互体验

1. 项目概述与核心价值如果你和我一样,是个重度浏览器用户,每天要在各种网页上处理信息、查找资料,那你肯定也遇到过这些烦心事:想快速回到页面顶部,得疯狂滚鼠标滚轮;想复制个链接,结果网页自作…...

开源协作平台集成结果导向管理:公益项目数字化解决方案

1. 项目概述与核心价值如果你在非营利组织、国际发展或公益项目管理领域工作,那么“结果导向管理”这个词对你来说一定不陌生。它听起来很专业,但实际操作起来,往往伴随着一堆令人头疼的表格、模糊的指标和难以追踪的进展。今天我想分享一个我…...

AI绘画自动化:从批量生成到Pixiv发布的半自动工具实践

1. 项目概述:从手动到自动,解放AI绘画生产力的全流程工具 如果你是一名深度使用NovelAI或Stable Diffusion这类AI绘画工具的创作者,那么你一定对“批量生成”和“自动发布”这两个词背后的痛楚深有体会。每次生成图片,你都需要在W…...

【大模型缓存优化终极指南】:SITS大会首发3大工业级缓存策略+实测QPS提升270%的落地代码

更多请点击: https://intelliparadigm.com 第一章:大模型缓存策略优化:SITS大会 缓存瓶颈与SITS大会共识 在2024年上海智能技术峰会(SITS)上,来自Meta、阿里达摩院与清华智谱的联合工作组首次公开了大语言…...

【2025最新】基于SpringBoot+Vue的汽车资讯网站管理系统源码+MyBatis+MySQL

摘要 随着互联网技术的快速发展,汽车行业的信息化需求日益增长,传统的汽车资讯获取方式已无法满足用户对实时性、交互性和个性化服务的需求。汽车资讯网站作为信息传播的重要平台,亟需一套高效、稳定且易于维护的管理系统,以提升用…...

别再只会用默认蓝色了!MATLAB scatter函数调色全攻略,从单色到渐变一次搞定

MATLAB散点图色彩艺术:从基础调色到数据驱动的视觉叙事 科研图表的美学价值往往被低估——直到你看到那些配色糟糕的论文插图。MATLAB的scatter函数远不止是绘制点集的工具,当掌握其色彩控制逻辑后,它能成为数据故事讲述的视觉利器。本文将彻…...

量子计算串扰问题与优化控制技术解析

1. 量子计算中的串扰问题与优化控制技术概述在量子计算硬件中,串扰(Crosstalk)是影响量子门操作精度的主要噪声源之一。当多个量子比特并行操作时,一个量子比特的控制脉冲会意外影响邻近量子比特的状态,这种现象在超导…...

2026届学术党必备的六大降重复率神器横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减小AIGC率的关键之处在于使文本的统计规律性以及模式化特性得以弱化。首先,别去…...

私有化大模型定制技术体系:从模型选型到工程闭环的全景路线图

摘要:基于开源大语言模型的私有化定制,已形成一套涵盖模型选型、数据工程、检索增强、训练后优化、智能体扩展及工程运维的完整技术体系。本文跳出单一的"微调对比检索"二分法,提出一套分层协同的定制化架构,包括基座模…...

系统设计:四叉树与 GeoHash

原文:towardsdatascience.com/system-design-quadtrees-geohash-5b896b975262 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5979ffdcbfe489e84bc8f684cde2911e.png 简介 Google Maps 和 Uber 只是众多处理地理数据的最流行…...

系统设计:负载均衡器

原文:towardsdatascience.com/system-design-load-balancer-9a3582176f9b 简介 大型分布式应用每秒处理超过数千个请求。在某个时刻,处理单个机器上的请求变得不再可能。这就是为什么软件工程师关心水平扩展,即整个系统持续地组织在多个服务…...

系统设计:一致性哈希

原文:towardsdatascience.com/system-design-consistent-hashing-43ddf48d2d32 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/25fd590876caa1d6c711fa521ea11f98.png 简介 我们生活在一个每天都会大量生成数据的世界上。在…...

系统设计:布隆过滤器

原文:towardsdatascience.com/system-design-bloom-filter-a2e19dcd4810 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/350b777cef6f9090c441e88a64b5066c.png 简介 哈希表是最广为人知和使用的几种数据结构之一。通过明智…...

Ro_一键获取E盾验证后台

链接:https://pan.quark.cn/s/a876e818b593软件来源网络,安全性自测。需要自己查找辅助IP...

Flutter 路由导航完全指南

Flutter 路由导航完全指南 引言 路由导航是任何移动应用的核心功能之一。Flutter 提供了强大而灵活的路由系统,支持多种导航方式。本文将深入探讨 Flutter 路由导航的各种技巧和最佳实践。 基础导航 Navigator.push Navigator.push(context,MaterialPageRoute(…...

Flutter 性能优化完全指南

Flutter 性能优化完全指南 引言 性能优化是移动应用开发中至关重要的一环。Flutter 虽然天生具有较好的性能表现,但在复杂应用中仍需要开发者进行针对性优化。本文将深入探讨 Flutter 性能优化的各种技巧和最佳实践。 性能问题定位 使用 DevTools // 在 pubspec.yam…...

CSS 渐变高级技巧完全指南

CSS 渐变高级技巧完全指南 引言 CSS 渐变是现代 Web 设计中不可或缺的视觉效果,它可以创建平滑的颜色过渡,为网页增添丰富的视觉层次。本文将深入探讨 CSS 渐变的各种类型和高级技巧。 基础语法回顾 线性渐变 .linear-gradient {background: linear-grad…...