Не удается войти из (fluentd) logdriver, используя имя службы в Compose

У меня в докере есть следующие настройки:

  • Приложение (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

Возможно, это из-за того, что параметр ведения журнала выполняется перед параметром «ссылка» в файле создания?

Есть ли способ позволить этому работать?


person lvthillo    schedule 27.07.2017    source источник


Ответы (1)


В настоящее время это невозможно. Docker deamon, который обрабатывает драйверы журналов, - это процесс, запущенный на хост-машине. Это не служба в вашей сети, поэтому она не может преобразовывать имена служб в IP-адреса. См. Эту проблему github для более подробных объяснений.

Вам нужно будет опубликовать порт, чтобы это работало.

person herm    schedule 27.07.2017