【问题标题】: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 文件部署的容器之间进行通信,我建议您不要这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多