如何使用容器名称与docker compose连接容器?

如何使用容器名称与docker compose连接容器?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我试图了解如何通过容器名称访问彼此之间的容器。特别是在使用pgadmin容器并通过dns连接到postgresql容器时 在docker compose V3中,我无法链接它们,网络:似乎也不可用 需要这样做的主要原因是当容器启动时,它们没有静态IP地址,因此在pgadmin中,我不能每次都使用相同的IP连接到postgresql数据库,因此dns名称会更好地工作(即:容器名称) 我们可以用docker compose来实现这一点,或者至少为特定容器设置一个静态ip地址 我已尝试创建用户定义的网

我试图了解如何通过容器名称访问彼此之间的容器。特别是在使用pgadmin容器并通过dns连接到postgresql容器时

在docker compose V3中,我无法链接它们,
网络:
似乎也不可用

需要这样做的主要原因是当容器启动时,它们没有静态IP地址,因此在pgadmin中,我不能每次都使用相同的IP连接到postgresql数据库,因此dns名称会更好地工作(即:容器名称)

我们可以用docker compose来实现这一点,或者至少为特定容器设置一个静态ip地址

我已尝试创建用户定义的网络:

networks:
  backed:
然后在服务中使用它:

app:
  networks:
    - backend
这会导致docker compose错误,该错误与应用程序中的“网络”选项无效有关

docker-compose.yml

version: "0.1"

services:
  devapi:
    container_name: devapi
    restart: always
    build: .
    ports:
      - "3000:3000"

  api-postgres-pgadmin:
    container_name: api-postgres-pgadmin
    image: dpage/pgadmin4:latest
    ports:
      - "5050:80"
    environment:
      - PGADMIN_DEFAULT_EMAIL=stuff@stuff.com
      - PGADMIN_DEFAULT_PASSWORD=12345

  api-postgres:
    container_name: api-postgres
    image: postgres:10
    volumes:
      - ./data:/data/db
    ports:
      - "15432:5432"
    environment:
      - POSTGRES_PASSWORD=12345

事实上,我发现了一个紧迫的问题:

version: "0.1"
你为什么这么做?撰写文件格式的当前版本为3.x。例如:

version: "3"
例如,请参阅

版本确定可用的功能。通过设置
版本:“0.1”
完全有可能明确禁用对
网络
参数的支持。您将注意到,示例中显示了使用
networks
属性的示例


顺便说一句,除非有特殊原因,否则我不会在您的撰写文件中使用
container\u name
,因为这使得无法在主机上运行同一个
compose
文件的多个实例。

网络可以从docker compose版本3获得,但您在docker compose文件中使用的是
版本:“0.1”


将docker-compose.yml中的
版本:“0.1”
更改为
版本:“3”

您能否进一步澄清这句话:“我试图理解如何通过容器名称访问彼此之间的容器。”?另外,为什么不能使用主机名在容器之间进行通信?另外,您的示例
docker compose.yml
没有显示您(尝试)使用
网络的情况。你能把它更新到包含那个吗?它可能会突出显示您看到该错误的原因。