【问题标题】:docker container can't connect to other container in different networkdocker容器无法连接到不同网络中的其他容器
【发布时间】:2019-03-01 16:36:07
【问题描述】:

我的服务器(app 和 web_server)上运行了 2 个不同的容器。它们在同一个网络中,因为我将它们放在同一个网络中,并且该网络的驱动程序是桥接器。

networks:
  app-network:
    driver: bridge

现在,我有第三个容器,它需要连接我提到的两个容器之一。我尝试像这样从第三个容器连接到第一个容器: app:9000 ,但它说找不到主机。我想这是因为他们在不同的网络中。我应该怎么做才能让它发挥作用?

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    您需要两个容器加入同一个网络。要么通过创建一个新网络然后加入它,要么其中一个加入另一个容器的网络。

    你有container1container2的docker-compose.yml:

    • 定义属于container3的外部网络
    • 将这两个容器中的一个添加到外部网络中,如第一个 sn -p 所示

    container3 所在的 docker-compose.yml 将是一个带有桥接网络的普通 docker-compose。

    您需要确保首先启动第三个容器,以便首先创建第三个网络,或者您可以使用 docker cli 手动创建第三个网络并将定义更改为外部

    #docker-compose.yml
    
    container1:
      networks:
        - first_network
        - second_network
    
    networks:
      first_network:
        driver: bridge
      second_network:
        external: true
    
    #docker-compose.yml
    container3:
      networks:
        - second_network
    
    networks:
      second_network:
        driver: bridge
    

    【讨论】:

    • 我该怎么做?
    • 我已经更新了我的答案。如果不清楚,请告诉我,以便我改进它
    • 让我们让它更简单。我在 docker-compose1.yaml 中有容器 1,在 docker-compose2.yaml 中有容器 2。他们现在在不同的网络中。我需要的是创建另一个网络。容器 2 需要连接容器 1。那么哪一个应该有桥接,哪一个是外部的?
    • 除非您首先需要特定的桥接器,否则哪一个桥接器并不重要。你甚至可以手动创建网络,然后让两个容器加入它
    • 但是其中一个应该有外部权限?如果两者都有桥,它将无法工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2023-02-03
    • 2021-05-22
    • 2021-11-21
    • 2022-12-01
    • 2020-12-17
    相关资源
    最近更新 更多