2016-10-05 26 views
0

我正在嘗試運行一個將CONSUL_URL作爲ENV變量的docker容器。現在,我已經在我的本地主機上設置了領事,我像這樣運行它: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,它給了我下面的錯誤:

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連接?我也嘗試將localhost url更改爲我的機器的IP地址,但是,我也遇到了同樣的錯誤。我已經完成了端口映射,所以我想它應該可以工作。我哪裏錯了?

+0

只是爲了確定,你知道新的docker「swarm模式」不需要Consul對嗎? – Alkaline

+0

@Alkaline,我的確瞭解了Docker羣,但我不確定它是否也提供了從Docker容器外部更改應用程序配置的功能,而無需再次重新構建映像。真的嗎? –

回答

1

您必須使用--net = host標誌。 該標誌將爲主操作系統中所有接口的暴露端口創建套接字。

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

它仍然顯示相同的錯誤,即getsockopt:連接被拒絕。 –

+0

你有在這個端口上運行的任何服務嗎? 檢查「netstat -na | grep 8500」 – Mgccon

+0

此命令顯示'tcp4 0 0 127.0.0.1.8500 *。* LISTEN'。 –

相關問題