【问题标题】:How do I connect containers in different networks in Docker Compose?如何在 Docker Compose 中连接不同网络中的容器?
【发布时间】:2019-08-23 06:38:39
【问题描述】:
---
version: '3.7'
networks:
sydney:
name: sydney
london:
name: london
services:
sydney-service:
image: whatever
hostname: sydney-service
container_name: sydney-service
networks:
- sydney
london-service:
image: whatever
hostname: london-service
container_name: london-service
environment:
PAIR_SERVER: sydney-service:8080 # doesn't work
networks:
- london
我在一个 docker compose 文件中有多个网络。由于不同的服务在不同的网络中,它们彼此看不到。如何将一个网络中的一项服务连接到另一个网络中的另一项服务?
谢谢!
【问题讨论】:
标签:
docker
docker-compose
【解决方案1】:
您可以通过将它们放在同一个网络中来连接它们。这就是 docker 中网络的目的,也是通过 docker 网络连接 docker 容器的先决条件之一。
您可以在多个网络中拥有一个容器,这可能会解决您面临的问题:
version: '3.7'
networks:
sydney:
name: sydney
london:
name: london
global:
services:
sydney-service:
image: whatever
hostname: sydney-service
container_name: sydney-service
networks:
- sydney
- global
london-service:
image: whatever
hostname: london-service
container_name: london-service
environment:
PAIR_SERVER: sydney-service:8080 # doesn't work
networks:
- london
- global
另一种选择是绕过容器网络,并在已发布的端口上与其他服务通信。在这种情况下,主机名是 docker 主机,端口是发布端口而不是容器端口。如果您的目的是能够在使用 compose 文件部署的容器之间进行通信,我建议您不要这样做。