无法使用docker-compose运行registry。 获取连接拒绝错误

我在本地机器上有Consul和一些服务。 现在我想利用注册人在领事实施服务注册。 如果我这样做:

$ docker run -d --name registrator --net=host \ --volume /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator \ consul://127.0.0.1:8500 

之后运行一些服务,我看到他们在领事注册。 但是,如果我试图通过docker-compose.yml(因为我不想每次手动运行上述命令):

 version: '2' services: consul: image: gliderlabs/consul-server:latest command: "advertise=127.0.0.1 -server -bootstrap" container_name: consul hostname: 127.0.0.1 ports: - "8500:8500" registrator: image: gliderlabs/registrator:latest command: "consulL//127.0.0.1:8500" container_name: registrator hostname: 127.0.0.1 depends_on: - consul volumes: - /var/run/docker.sock:/tmp/docker.sock ... other services that need to be registered 

并运行:

 $ docker-compose up 

然后我在控制台中看到这个错误消息:

 registrator | 2017/01/16 17:01:24 Get http://127.0.0.1:8500/v1/status/leader dial tcp 127.0.0.1:8500: connection refused 

我猜,我的问题与事实有关,即我没有指定--net=host 。 但我不知道我该怎么做。 我希望有人知道如何解决这个问题。

Docker-compose默认docker-compose.yml的所有服务创build新的networking。 如果您需要将您的容器附加到主机networking,请添加到您的服务networking模式参数:

 ... registrator: network_mode: host ...