Docker 中多个容器之间的通信

在 Docker 中,多个容器之间的通信可以通过以下几种主要方式实现,具体选择取决于网络需求、隔离性及管理复杂度:


一、自定义 Bridge 网络(推荐)

通过创建自定义的 Docker 网络,容器可以加入同一网络并通过容器名称或别名直接通信,无需依赖易变的 IP 地址。

  1. 创建自定义网络
    docker network create mynet
    
  2. 启动容器并加入网络
    docker run -d --name web --network mynet nginx
    docker run -it --name client --network mynet alpine
    
  3. 通过容器名称通信
    client 容器中执行 ping web 或通过 HTTP 访问 http://web:80
    优势:支持 DNS 自动解析,隔离性强,适合生产环境。

二、Docker Compose 编排网络

使用 Docker Compose 定义多容器应用,自动创建独立网络并实现服务间通信。

  1. 定义 Compose 文件
    version: '3'
    services:web:image: nginxdb:image: postgres
    
  2. 启动服务
    docker-compose up -d
    
    web 服务可通过 db:5432 访问数据库。
    优势:简化配置,支持声明式网络管理。

三、默认 Bridge 网络(简单测试)

Docker 默认的 bridge 网络允许容器通过 IP 地址通信,但需手动维护 IP。

  1. 启动容器(默认加入 bridge 网络)
    docker run -d --name container1 nginx
    docker run -it --name container2 alpine
    
  2. 通过 IP 通信
    container2 中执行 ping <container1_ip>
    局限:IP 地址随容器重启变化,需动态获取。

四、Host 模式(高性能场景)

容器直接使用宿主机的网络栈,通过 localhost 或宿主机 IP 通信。

  • 启动容器
    docker run -d --name service1 --network host nginx
    docker run -it --network host alpine
    
    alpine 中访问 http://localhost:80
    优势:零网络开销;缺点:牺牲网络隔离性。

五、跨主机通信(集群场景)

通过 Overlay 网络实现跨物理机或虚拟机的容器通信,需配合 Docker Swarm 或 Kubernetes。

  1. 创建 Overlay 网络
    docker network create -d overlay my-overlay
    
  2. 在 Swarm 集群中部署服务
    docker service create --network my-overlay --name service1 nginx
    
    适用场景:分布式微服务架构。

其他补充方式

  1. 共享卷:通过挂载同一数据卷实现文件级通信(非网络通信)。
  2. 消息队列(如 RabbitMQ):异步解耦容器间的通信。
  3. 网络代理(如 Nginx):通过反向代理路由流量。

选择策略

场景推荐方案特点
单机开发测试Docker Compose自动化网络配置,服务发现便捷
生产环境微服务自定义 Bridge 网络DNS 解析,隔离性强
高性能需求Host 模式低延迟,牺牲隔离性
跨主机集群Overlay 网络支持多节点通信,需集群管理工具

调试工具

  • 查看容器 IP:
    docker inspect -f '{{.NetworkSettings.IPAddress}}' <容器名>
    
  • 测试网络连通性:
    docker exec -it client curl http://web:80
    

通过合理选择上述方案,可覆盖 90% 的 Docker 容器通信需求。推荐优先使用 自定义 Bridge 网络Docker Compose 以平衡灵活性与维护性。

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

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

相关文章

Day1-初次接触UFS

经过导师初次介绍&#xff0c;了解工作以芯片测试为主&#xff0c;需坚持学习&#xff0c;小白大致需3-6月入门。整体学习应分为3大块&#xff0c;UFS协议占40%&#xff08;3-4h&#xff09;,C技能占40%&#xff08;3-4h&#xff09;,工具或业务占20%&#xff08;1-2h&#xff…

【LeetCode 热题100】二叉树构造题精讲:前序 + 中序建树 有序数组构造 BST(力扣105 / 108)(Go语言版)

&#x1f331; 二叉树构造题精讲&#xff1a;前序 中序建树 & 有序数组构造 BST 本文围绕二叉树的两类构造类题目展开解析&#xff1a; 从前序与中序遍历序列构造二叉树 将有序数组转换为二叉搜索树 我们将从「已知遍历构造树」和「平衡构造 BST」两个角度&#xff0c;拆…

JMeter重要的是什么

重要特性 支持多种协议&#xff1a; JMeter支持对多种协议进行性能测试&#xff0c;包括HTTP、HTTPS、FTP、JDBC&#xff08;数据库&#xff09;、LDAP、JMS、SOAP、REST等。这使得它能够适应各种不同的测试场景。强大的负载模拟能力&#xff1a; JMeter能够模拟大量的虚拟用户…

一文读懂WPF系列之MVVM

WPF MVVM 什么是MVVMWPF为何使用MVVM机制WPFMVVM 的实现手段 INotifyPropertyChanged​数据绑定的源端通知​​原理 PropertyChanged事件双向绑定的完整条件常见疑惑问题 什么是MVVM 翻译全称就是 model-view-viewmodel 3部分内容 以wpf的概念角度来解释就是 数据库数据源模型…

OCR API识别对比

OCR 识别DEMO OCR识别 demo 文档由来 最开始想使用百度开源的 paddlepaddle大模型 研究了几天&#xff0c;发现表格识别会跨行&#xff0c;手写识别的也不很准确。最终还是得使用现成提供的api。。 文档说明 三个体验下来 腾讯的识别度比较高&#xff0c;不论是手写还是识别表…

嵌入式MCU常用模块

日后填坑。 无线通信模块 2.4G 基本介绍 以NRF24L01为例。 NRF24L01是一款2.4GHz的无线收发模块&#xff0c;支持SPI通信协议&#xff0c;具有低功耗、高数据速率&#xff08;250kbps-2Mbps&#xff09;和多设备通信能力。 它可以同时与最多6个其他模块通信&#xff0c;适合…

记一次InternVL3- 2B 8B的部署测验日志

测试效果&#xff1a; 问题和耗时如图 5、资源占用 不释放资源会一直涨显存。总体还算满意&#xff0c;我试了好多个图理解大模型&#xff0c;就属它牛一点 附图一张 补充&#xff0c;测试InternVL3-2B的结果 1、模型下载魔搭社区 2、运行环境&#xff1a; 1、硬件 RTX 30…

Java版本对应关系表

Java版本对应关系表 以下Java主要版本&#xff08;Major Version&#xff09;与公开大版本号的对应关系 公开大版本名称Major 版本号内部版本号格式示例&#xff08;java -version输出&#xff09;Java 8 (1.8)52 (0x34)1.8.0_XXX1.8.0_301Java 953 (0x35)9.0.X9.0.4Java 105…

2025最新版flink2.0.0安装教程(保姆级)

Flink支持多种安装模式。 local&#xff08;本地&#xff09;——本地模式 standalone——独立模式&#xff0c;Flink自带集群&#xff0c;开发测试环境使用 standaloneHA—独立集群高可用模式&#xff0c;Flink自带集群&#xff0c;开发测试环境使用 yarn——计算资源统一…

android11 配置默认电池优化白名单

目录 1.介绍 2.读取配置文件 3.默认配置一个白名单列表 1.介绍 在 Android 11 中,DeviceIdleController 是负责控制设备进入 Doze 模式(闲置模式) 的核心系统服务,其内部方法 readConfigFileLocked() 负责从配置文件中读取 Doze 模式的行为参数,包括 idle 阶段的时间间…

java中的Future的设计模式 手写一个简易的Future

案例 例如&#xff1a;今天是小妹的生日&#xff0c;需要一个蛋糕有点仪式感&#xff0c;于是去蛋糕店预定&#xff0c;预定完之后&#xff0c;店老板说蛋糕做好了&#xff0c;到时电话通知你&#xff0c;不可能在这傻傻的等着吧&#xff0c;还有其他事情要做啊&#xff0c;于…

【Redis】Redis C++使用

一、Redis的自定义网络协议 1.1 为什么可以编写出一个自定义的Redis客户端 为什么我们可以编写出一个自定义的Redis客户端&#xff1f;因为Redis公开了自己的自定义协议。而对于一些其他软件的客户端&#xff0c;我们无法编写出一个自定义的Redis客户端&#xff0c;因为他们没…

【软考系统架构设计师】软件工程知识点

1、 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体分为问题定义、可行性研究、需求分析等 软件开发时期&#xff1a;软件的设计与实现&#xff0c;分为概要设计、详细设计、…

DeepSeek 与开源:肥沃土壤孕育 AI 硕果

当国产 AI DeepSeek 以其低成本推理和多模态能力在全球范围内引起轰动时&#xff0c;人们惊叹于中国技术的迅猛发展&#xff0c;却很少有人深究这一成就背后的根基。答案其实早已写在中国开源生态二十多年的发展历程中。 从倪光南院士提出“以开源打破技术垄断”的理念&#x…

职坐标:智慧城市未来发展的核心驱动力

内容概要 智慧城市的演进正以颠覆性创新重构人类生存空间&#xff0c;其发展脉络由物联网、人工智能与云计算三大技术支柱交织而成。这些技术不仅推动城市治理从经验决策转向数据驱动模式&#xff0c;更通过实时感知与智能分析&#xff0c;实现交通、能源等领域的精准调控。以…

vue复习46~90

1.小兔鲜 所有都折叠 ctrl k,ctrl0 所有都展开 ctrl k,ctrlj当前结构渲染5次 <BaseBrandItem v-for"item in 5" :key"item"><BaseBrandItem>2.scoped样式冲突 结构&#xff1a;只能有一个根元素样式&#xff1a;全局样式(默认)&#xff1…

PHP 用 workman 即时通讯,做个简版QQ

1. workman是什么 &#xff0c;一般应用在那些地方 workerman是一个高性能的PHP socket 服务器框架&#xff0c;workerman基于PHP多进程以及libevent事件轮询库&#xff0c;PHP开发者只要实现一两个接口&#xff0c;便可以开发出自己的网络应用&#xff0c;例如Rpc服务、聊天室…

【WORD】批量将doc转为docx

具体步骤进行&#xff1a; 打开Word文档&#xff0c;按下AltF11快捷键&#xff0c;打开VBA编辑器。在VBA编辑器中&#xff0c;左侧的“项目资源管理器”窗口会显示当前打开的Word文档相关项目。找到您要添加代码的文档项目&#xff08;通常以文档名称命名&#xff09;&#xf…

【免费】【实测有用】5KPlayer Windows 电脑作为 MacBook 无线扩展屏

总结&#xff1a;使用 5KPlayer 将 Windows 电脑作为 MacBook 无线扩展屏 准备工作 设备要求&#xff1a; MacBook 和 Windows 电脑需连接到同一 Wi-Fi 网络。【这里有雷&#xff1a;eduroam不会成功&#xff0c;家里的WIFI成功了&#xff0c;需要确认校园网是否可行。】确保…

华为华三模拟器解决兼容问题Win11 24H2 现在使用ENSP的问题解决了

一、Win11 24H2 现在使用ENSP的问题解决了 这个Win11 的 24H2不能使用ENSP的问题已经困扰我们很久了,在之前的文章中,我们也有说明这个问题 之前ENSP肯定启动会报错40 当时还建议大家先不要更新到win11的24H2版本,现在终于迎来了更新,不用再担心了,包括早就升级了24H2版…