Docker 中多个容器之间的通讯

打印 上一主题 下一主题

主题 1880|帖子 1880|积分 5640

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

一、自界说 Bridge 网络(推荐)

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

  • 创建自界说网络
    1. docker network create mynet
    复制代码
  • 启动容器并加入网络
    1. docker run -d --name web --network mynet nginx
    2. docker run -it --name client --network mynet alpine
    复制代码
  • 通过容器名称通讯
    在 client 容器中执行 ping web 或通过 HTTP 访问 http://web:80。
    优势:支持 DNS 自动剖析,隔离性强,得当生产环境。

二、Docker Compose 编排网络

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

  • 界说 Compose 文件
    1. version: '3'
    2. services:
    3.   web:
    4.     image: nginx
    5.   db:
    6.     image: postgres
    复制代码
  • 启动服务
    1. docker-compose up -d
    复制代码
    web 服务可通过 db:5432 访问数据库。
    优势:简化设置,支持声明式网络管理。

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

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

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

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

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


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

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

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

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

其他补充方式


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

选择战略

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



  • 查看容器 IP:
    1. docker inspect -f '{{.NetworkSettings.IPAddress}}' <容器名>
    复制代码
  • 测试网络连通性:
    1. docker exec -it client curl http://web:80
    复制代码
通过公道选择上述方案,可覆盖 90% 的 Docker 容器通讯需求。推荐优先使用 自界说 Bridge 网络Docker Compose 以平衡灵活性与维护性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表