У меня в докере есть следующие настройки:
- Приложение (httpd)
- Свободно
- ElasticSearch
- Кибана
Конфигурация logdriver приложения описывает контейнер fluentd. Журналы будут сохранены в ES и показаны в Kibana.
Когда драйвер журнала настроен как это, он работает:
web:
image: httpd
container_name: httpd
ports:
- "80:80"
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: localhost:24224
tag: httpd.access
Fluentd сопоставляет свой открытый порт 24224 с портом 24224 хоста.
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
ports:
- "24224:24224"
Но я не хочу выставлять свой свободный доступ к хост-сети. Я хочу, чтобы он оставался «частным» внутри сети докеров (я хочу только сопоставить приложение и кибану в сети хоста), вот так:
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
Порт 24224 по-прежнему открыт (в файле докеров), но не отображается в сети хоста. Теперь я хочу изменить конфигурацию драйвера журнала моего приложения: logging: driver: "fluentd" options: fluentd-address: fluentd: 24224 tag: httpd.access
Итак, fluentd - это имя контейнера fluentd, и они находятся в одной сети, но приложение не может установить с ним соединение.
failed to initialize logging driver: dial tcp: lookup fluentd
Возможно, это из-за того, что параметр ведения журнала выполняется перед параметром «ссылка» в файле создания?
Есть ли способ позволить этому работать?