如何将docker工人的服务与领事连接起来?

我试图运行一个docker容器,将CONSUL_URL作为一个ENVvariables。 现在,我已经在我的本地主机上设置了领事,我像这样运行它: 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容器, docker run -e CONSUL_URL=127.0.0.1:8500 -p 8500:8500 b321825a6c7a ,它给我以下错误:

 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' 

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

你必须使用–net = host标志。 该标志将为主操作系统中所有接口的暴露端口创build套接字。

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