无法解析docker compose中定义的服务/主机名的原因

无法解析docker compose中定义的服务/主机名的原因,docker,docker-compose,Docker,Docker Compose,我从另一个容器访问容器时遇到问题。我的docker-compose.yml文件是: version: '2' services: consul: image: "consul" hostname: "consul" command: "agent -server -client=0.0.0.0 -bind=10.30.1.134 -retry-join=10.30.1.97 -retry-join=10.30.1.42 -bootstrap-expect=3

我从另一个容器访问容器时遇到问题。我的docker-compose.yml文件是:

  version: '2'
services:

  consul:
    image: "consul"
    hostname: "consul"
    command: "agent -server -client=0.0.0.0  -bind=10.30.1.134 -retry-join=10.30.1.97 -retry-join=10.30.1.42 -bootstrap-expect=3 -ui"
    ports:
      - "8400:8400"
      - "8500:8500"
      - "8300:8300"
      - "8301:8301"
      - "8302:8302"
      - "8600:53/udp"
    volumes:
      - /data/consul:/consul/data
    network_mode: host
  vault:
    depends_on:
      - consul
    image: "vault"
    hostname: "vault"
    links:
      - consul
    environment:
      VAULT_ADDR: http://127.0.0.1:8200
    ports:
      - "8200:8200"
      - "8201:8201"
    volumes:
      - ./tools/wait-for-it.sh:/wait-for-it.sh
      - ./config/vault:/config
      - ./config/vault/policies:/policies
    entrypoint: /wait-for-it.sh -t 200 -h consul -p 8500 -s -- vault server -config=/config/with-consul.hcl
当我做docker撰写时,我会看到错误

vault_1   | nc: bad address 'consul'    
而且我无法ping该服务:

root@ip-10-30-1-134:~# docker run vault ping consul
ping: bad address 'consul'

根据文件规定,承包商必须可以通过定义的名称访问,即CONSOR

您能否验证CONSOR启动并成功运行?是CONSOR启动并加入群集-我拥有CONSOR群集2017/07/12 07:33:10[信息]代理:加入已完成。与2个初始代理同步我刚刚测试过,如果我在vault容器中添加“172.18.0.1 Consor”,那么所有工作都正常。现在的问题是为什么它在docker-compose.ymlTo中不起作用要测试dns,请执行以下操作:
docker run--rm--net container:project\u vault\u 1 nicolaka/netshoot drill Consor@127.0.0.11
确保用docker compose显示的第一个vault容器的实际容器名替换
project\u vault\u 1
。这将创建一个与vault容器共享名称空间的容器,以便您可以测试其网络环境。127.0.0.11 dns服务器是docker运行的内部dns服务器。我注意到你为领事指定了一个链接。您不需要使用链接。您使用的是什么版本的docker compose?docker ps
d95ff11519a4 vault”/wait-it.sh-t2“大约一分钟前,大约一分钟前上升到0.0.0.0:8200-8201->8200-8201/tcp cault_vault_1 9dceb1bc31c7顾问“docker entrypoint.sh”大约一分钟前起来大约一分钟考尔领事1root@ip-10-30-1-134:~/cault#docker exec d95ff11519a4 dig@127.0.0.11 consur rpc错误:code=2 desc=containerd:container not started
您能验证consur启动并成功运行吗?是的consur启动并加入集群-我有consur群集2017/07/12 07:33:10[信息]代理:加入已完成。与2个初始代理同步我刚刚测试过,如果我在vault容器中添加“172.18.0.1 Consor”,那么所有工作都正常。现在的问题是为什么它在docker-compose.ymlTo中不起作用要测试dns,请执行以下操作:
docker run--rm--net container:project\u vault\u 1 nicolaka/netshoot drill Consor@127.0.0.11
确保用docker compose显示的第一个vault容器的实际容器名替换
project\u vault\u 1
。这将创建一个与vault容器共享名称空间的容器,以便您可以测试其网络环境。127.0.0.11 dns服务器是docker运行的内部dns服务器。我注意到你为领事指定了一个链接。您不需要使用链接。您使用的是什么版本的docker compose?docker ps
d95ff11519a4 vault”/wait-it.sh-t2“大约一分钟前,大约一分钟前上升到0.0.0.0:8200-8201->8200-8201/tcp cault_vault_1 9dceb1bc31c7顾问“docker entrypoint.sh”大约一分钟前起来大约一分钟考尔领事1root@ip-10-30-1-134:~/cault#docker exec d95ff11519a4 dig@127.0.0.11领事rpc错误:代码=2描述=containerd:容器未启动