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

时间:2017-01-16 17:33:26

标签: docker docker-compose

我在本地机器上有Consul和一堆服务。现在我想使用Registrator在Consul中实现服务注册。如果我这样做:

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

在那之后运行一些服务,我看到他们在Consul注册了。但是,如果我尝试通过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。但我不知道我该怎么做。我希望,有人知道如何解决它。

1 个答案:

答案 0 :(得分:1)

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

...
registrator:
  network_mode: host
  ...