如何使用consul连接在docker中运行的服务?

时间:2016-10-05 10:23:21

标签: docker consul

我正在尝试运行一个将CONSUL_URL作为ENV变量的docker容器。现在,我已经在我的localhost上设置了领事,我这样运行:consul agent -dev -bind=127.0.0.1 -ui-dir /usr/local/Cellar/consul/0.7.0/share/consul/web-ui

当我去http://localhost:8500时,我可以通过这种方式访问​​领事馆。但是,现在我正在通过此docker run -e CONSUL_URL=127.0.0.1:8500 -p 8500:8500 b321825a6c7a运行docker容器,它会给我以下错误:

2016/10/05 09:38:38 [ERR] (view) "key_or_default(foo.appconfig.properties/logger.name, "foo_PERF_LOG")" store key: error fetching: Get http://127.0.0.1:8500/v1/kv/foo.appconfig.properties/logger.name?stale=&wait=60000ms: dial tcp 127.0.0.1:8500: getsockopt: connection refused
2016/10/05 09:38:38 [ERR] (runner) watcher reported error: store key: error fetching: Get http://127.0.0.1:8500/v1/kv/foo.appconfig.properties/logger.name?stale=&wait=60000ms: dial tcp 127.0.0.1:8500: getsockopt: connection refused
Consul Template returned errors:
store key: error fetching: Get http://127.0.0.1:8500/v1/kv/foo.appconfig.properties/logger.name?stale=&wait=60000ms: dial tcp 127.0.0.1:8500: getsockopt: connection refusedexecuting: 'myscript.sh run'

为什么我无法连接领事网址?我也尝试将localhost url更改为我的机器的IP地址,但是,我也得到了同样的错误。我已经完成了端口映射,所以,我想它应该可行。我哪里错了?

1 个答案:

答案 0 :(得分:1)

您必须使用--net = host标志。 该标志将为主OS中所有接口的公开端口创建套接字。

docker run --net=host -e CONSUL_URL=127.0.0.1:8500  b321825a6c7a