首页 > 解决方案 > 如何从连接到外部网络的另一个组合访问容器?

问题描述

这是我希望从外部容器连接到的带有容器配置的撰写文件(在另一个撰写文件中定义):

version: '3.5'
services:
  service-to-connect-to:
    build: .
    networks:
      - my-external-network

networks:
  my-external-network:
    external: true

和另一个包含我希望连接到的容器的配置的撰写文件service-to-connect-to

version: "3.5"

services:
  service-to-connect-from:
    build: .

我尝试service-to-connect-to通过以下域连接:

service-to-connect-to service-to-connect-to.my-external-network my_external_network.service-to-connect-to

但他们都没有工作。

我哪里错了?

谢谢

标签: dockerdocker-composedocker-networkingdocker-network

解决方案


首先,您必须将这两种服务添加到同一网络才能连接它们。因此,后者的撰写文件应该类似于

version: "3.5"

services:
  service-to-connect-from:
    build .
    networks:
      - my-external-network

networks:
  my-external-network:
    external: true

现在这两个服务都在同一个网络上,它们可以使用容器的名称找到彼此。容器名称默认与服务名称相同,但 docker compose 也为其添加前缀项目名称,默认情况下是 compose 文件所在的目录名称。如果您首先启动服务docker-compose up -d,然后通过运行查看容器如何命名,您可以看到这一点docker ps。例如,容器名称可以是project1_service-to-connect-to。使用此名称,您可以从其他服务进行连接。

如果您愿意,您还可以使用container_name服务选项显式设置容器的名称。使用时,compose 不再为容器名称添加前缀。


推荐阅读