来自此docker compose的跨容器通信不工作

来自此docker compose的跨容器通信不工作,docker,docker-compose,Docker,Docker Compose,在我的项目中,我有三项服务 雷迪斯 服务-1 服务-2 这是docker编写文件 version: '3' services: redis: image: redis ports: - 6379:6379 service-1: image: service-1-latest ports: - 7002:7002 depends_on: - redis service-2: image: se

在我的项目中,我有三项服务

  • 雷迪斯

  • 服务-1

  • 服务-2

  • 这是docker编写文件

    version: '3'
    
    services:
    
      redis:
        image: redis
        ports:
          - 6379:6379
    
      service-1:
        image: service-1-latest
        ports:
          - 7002:7002
        depends_on:
          - redis
    
    
      service-2:
        image: service-2-latest
        ports:
          - 7000:7000
        restart: on-failure:5
    
    服务-2与服务-1通信,如

    但在这样做时,我在日志上看到以下消息:

    拨打127.0.0.11:53上的tcp:lookup service-1:没有这样的主机

    我通过遵循堆栈溢出和docker文档尝试了几种方法,但跨容器通信不起作用,首先我在MacOs上尝试过,然后在Linux上尝试过,但都不起作用。在我的例子中,一个容器(service-2)调用其他容器的rest端点(例如service-1)。

    操作系统详细信息:Linux staging 4.15.0-58-generic#64 Ubuntu SMP周二8月6日11:12:41 UTC 2019年x86_64 x86_64 GNU/Linux

    Docker版本:Docker版本19.03.1,版本74b1e89

    ----------参考文献---------------------------

    我按照本文件执行上述操作:

    上面写着:

    例如,假设您的应用程序位于名为myapp的目录中,并且您的docker-compose.yml如下所示:

    version: "3"
    services:
      web:
        build: .
        ports:
          - "8000:8000"
      db:
        image: postgres
        ports:
          - "8001:5432"
    
    运行docker compose up时,会发生以下情况:

    创建了一个名为myapp_default的网络。 容器是使用web的配置创建的。它以web的名称加入网络myapp_默认值。 容器是使用db的配置创建的。它以db的名义加入网络myapp_默认值。

    试试这个

    /etc/resolv.conf
    文件中编辑DNS名称服务器对我有帮助

    将现有名称服务器更改为google名称服务器,即x.x.x.x更改为8.8.8.8

    注释您的名称服务器IP并添加如下内容:

    #nameserver x.x.x.x
    nameserver 8.8.8.8  
    

    应该行。

    我试过了,但没有成功,这意味着我也尝试了许多其他方法,可能是我犯了一些其他基本错误!你有没有写过“docker写下来”?如果没有,试试看。它将删除由compose创建的网络。不正确的网络可能导致这种情况。docker network ls将列出所有网络,您可以检查它们。