多个docker-compose网络之间通信

本文探讨了在Docker Compose环境中,两个独立网络(net1_net1和net2_net2)中服务间通信的问题,通过实例展示如何在PHP容器中使用ping命令验证连接,并提供了非公用网络解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发过程中偶尔会遇到不同的docker-compose之前通信,例如1台redis(A)、1台应用服务(B)分别在不同的网络中即net1_net1、net2_net2中,当B想订阅A时会发现网络不通

聊一个不是创建公用网络解决问题的方案

1. 网络net1_net1(A)
  • 目录 net1/docker-compose.yml
  • docker-compose.yml
version: '3.5'
# 网络配置
networks:
  net1:
    driver: bridge
  net2_net2:
    external: true
services:
  redis:
      image: "redis:alpine"
      container_name: net1-redis
      command: redis-server --appendonly yes
      networks:
        - net1
        - net2_net2
2. 网络net2_net2(B)
  • 目录 net2/docker-compose.yml
  • docker-compose.yml
version: '3.5'
# 网络配置
networks:
  net2:
    driver: bridge
services:
  php81:
      image: "php:8.1-fpm"
      container_name: net1-php81
      networks:
        - net2
  • 在容器中执行 ping net1-kafka
root@ad2e8f071f7e:/var/www/html# ping net1-redis
PING net1-redis (192.168.96.3) 56(84) bytes of data.
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=1 ttl=64 time=0.164 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=3 ttl=64 time=0.157 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=4 ttl=64 time=0.250 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=5 ttl=64 time=0.144 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=6 ttl=64 time=0.073 ms
  • 或者直接在宿主机执行 docker exec -it net1-php81 ping net1-redis
➜  ~ docker exec -it net1-php81 ping net1-redis
PING net1-redis (192.168.96.3) 56(84) bytes of data.
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=1 ttl=64 time=0.140 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=2 ttl=64 time=0.048 ms
64 bytes from net1-redis.net2_net2 (192.168.96.3): icmp_seq=3 ttl=64 time=0.089 ms
3.debian安装ping
  • 执行 apt-get update
  • 执行 apt-get install iputils-ping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值