我在 docker 中有以下设置:
- 应用程序(httpd)
- Fluentd
- 弹性搜索
- Kibana
应用程序的日志驱动程序的配置正在描述 fluidd 容器。日志将保存在 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"
但我不想在主机网络上公开我的 fluidd。我想将其保持在 docker 网络内的“私有”状态(我只想将应用程序和 kibana 映射到主机网络上),如下所示:
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
端口 24224 仍然暴露(在 dockerfile 中),但它没有映射到主机网络上。现在我想更改我的应用程序的日志驱动程序的配置:
记录:
司机:“流利”
选项:
流利的地址:流利的:24224
标签:httpd.access
因此 Fluentd 是 Fluentd 容器的名称,它们位于同一网络中,但应用程序无法与其建立连接。
failed to initialize logging driver: dial tcp: lookup fluentd
这可能是因为日志记录选项是在撰写文件中的“链接”选项之前执行的吗?
有办法让它发挥作用吗?