来自此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
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将列出所有网络,您可以检查它们。