2016-10-05 2 views
0

Я пытаюсь запустить контейнер докера, который принимает CONSUL_URL как переменную ENV. На данный момент я создал консула на моем локальном хосте, и я запускаю его следующим образом: 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? Я также попытался изменить URL-адрес localhost на IP-адрес моей машины, но я тоже получаю ту же ошибку. Я сделал картографирование портов, поэтому, я думаю, это должно сработать. Где я иду не так?

+0

только для того, чтобы убедиться, что вы знаете, что новый режим «рой» докеры не требует от Консула права? – Alkaline

+0

@Alkaline, я прочитал о рое докеров, но я не уверен, что он также обеспечивает функциональность изменения конфигураций приложений вне контейнера докеров, не перестраивая изображение снова и снова. Это правда? –

ответ

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'. –

Смежные вопросы