docker - Docker Compose V2网络错误

标签 docker docker-compose dockerfile docker-machine

我正在尝试在两个容器之间进行通信,但无法执行相同操作。
我在docker compose中添加了一个名为“服务器”的服务,该服务依赖于另一个名为“端点”的服务。
我需要将“端点”的ip和端口传递给“服务器”,并且我在做以下操作

command: -userver -e endpoint:51393

但是现在我使用下面的命令在主机列表中没有看到“端点”:
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时,不再需要通过操作容器的hosts文件来完成从另一个容器到达另一个容器的操作,因为这是一个非常静态的设置。

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

有关更多详细信息,请查看关于联网的docker-compose docs

一些用于调试情况的命令:

docker-compose exec server nslookup endpoint

docker inspect <container_name_of_service>

关于docker - Docker Compose V2网络错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41432297/

相关文章:

python - 无法使用 Dockerfile 安装 llvm-lite

amazon-web-services - 是否可以从 Docker 镜像创建 AWS AMI?

node.js - Docker:最后的 Node Alpine 镜像是否比完整 Node 镜像小?

docker - 在 Docker Compose 中,.env 中的环境变量是捆绑在镜像内还是仅可用于容器?

docker - 如何在 docker 上运行 Protractor ?

php - Docker PHP5.6 调用未定义函数bindtextdomain()

amazon-web-services - 在 AWS 中自动扩展 docker 容器

Docker compose 无法构建,而 docker build 没有任何问题

Docker撰写不持久化数据

node.js - 从外部将node_modules复制到docker容器中