Docker Compose V2 网络错误

Docker Compose V2 network error

我正在尝试在两个容器之间进行通信,但无法做到这一点。 我在 docker compose 中添加了一个名为 'server' 的服务,依赖于另一个名为 'endpoint' 的服务。 我需要将 'endpoint' 的 ip 和端口传递给 'server',我正在做与下面相同的事情

command: -userver -e endpoint:51393

但现在我在使用以下命令的主机列表中看不到 'endpoint':

docker-compose exec server cat /etc/hosts

这是输出:

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.3      49f4808fa677

我的完整 docker-compose.yml 文件如下:

version: '2'

services:
  endpoint:
    build:
      context: .
      dockerfile: Dockerfile
    image: myimage_end:0.1
    command: -uendpoint
    ports:
      - 51393:51393
    networks:
      - internal

  server:
    build:
      context: .
      dockerfile: Dockerfile
    image: myimage_server:0.1
    command: -userver -e endpoint:51393
    ports:
      - 51392:51392
    depends_on:
      - endpoint
    networks:
      - internal
    volumes:
      - /local_path/dataset:/dataset

networks:
  internal:
    driver: bridge

当您使用当前版本的 docker compose 时,不再通过操纵容器的主机文件从一个容器访问另一个容器,因为这是一个相当静态的设置。

如今 docker-compose 使用某种 dns 服务,允许同一网络中的所有容器在其服务名称下相互查看。这允许停止依赖容器而不会导致依赖容器也 stop/restart。为此,您也不需要指定 depends_on。这只需要在重新启动依赖项时触发依赖服务的重新启动。

有关详细信息,请查看有关网络的docker-compose docs

调试您的情况的一些命令:

docker-compose exec server nslookup endpoint

docker inspect <container_name_of_service>