如何在内部网络中在docker中运行fluentd

如何在内部网络中在docker中运行fluentd,docker,fluentd,Docker,Fluentd,我的docker compose文件中有以下配置: fluentd: build: ./fluentd container_name: fluentd expose: - 24224 - 24224/udp depends_on: - "elasticsearch" networks: - internal public-site: build: ./public-site container_nam

我的docker compose文件中有以下配置:

 fluentd:
    build: ./fluentd
    container_name: fluentd
    expose:
    - 24224
    - 24224/udp
    depends_on:
    - "elasticsearch"
    networks:
    -  internal

 public-site:
    build: ./public-site
    container_name: public-site
    depends_on:
    - fluentd
    logging:
      driver: fluentd
      options:
        tag: public-site
    networks:
    -  internal

networks:
  internal:
当我使用
docker compose up启动应用程序时,Web服务器存在,并显示错误消息error:for public site无法启动服务public site:未能初始化日志驱动程序:拨号tcp 127.0.0.1:24224:连接:连接被拒绝

另一方面,当我从fluentd发布端口时(
ports:24224:24224
),它可以工作。问题是我不想在主机上发布这些端口,因为它绕过了linux防火墙(即,它向所有人公开fluentd端口,请参阅)

这是令人困惑的,因为公开端口应该使网络中的每个容器都可以使用它。我正在使用fluentd和Web服务器之间的内部网络,因此我希望fluentd的公开端口足够了(事实并非如此)


当我连接到webserver容器时,我可以ping并解析fluentd容器,这样就有了一个连接。但是,由于某些原因,在启动时,它不会接受没有发布端口的fluentd配置。

如果您在容器中,与127.0.0.1的通信总是有问题的。我在文档中发现了这一解释,它比我所做的更好:

要将fluentd驱动程序用作默认日志记录驱动程序,请设置 在daemon.json中将驱动程序和选择键记录到适当的值 文件,位于Linux主机上的/etc/docker/或 Windows服务器上的C:\ProgramData\docker\config\daemon.json。更多 关于使用daemon.json配置Docker,请参阅+daemon.json

下面的示例将日志驱动程序设置为fluentd,并将 fluentd地址选项

 {
   "log-driver": "fluentd",
   "log-opts": {
     "fluentd-address": "fluentd:24224"
   }
 }
src:


编辑:在您希望主机上的应用程序与DockerFluentD进行通信之前,此操作一直有效(这很麻烦)

fluentd异步连接:“true”
添加到您的docker组件:

public-site: 
  logging:
    driver: "fluentd"
    options:
      fluentd-async-connect: "true"
      tag: public-site

当我使用fluentd地址时,我得到的结果是:
无法启动服务公共站点:未能初始化日志驱动程序:拨号tcp:lookup fluentd:名称解析暂时失败
。我能做些什么来帮助docker解决fluentd?我试过
依赖于
链接
,但两者都不起作用。你能再做一次测试吗?尝试运行
docker compose up fluentd
等待一段时间,然后
docker compose up公共站点
。我认为资源准备好被访问时可能有问题。当我遇到此错误时:
无法启动服务公共站点:未能初始化日志驱动程序:拨打192.168.65.1:53上的tcp:lookup fluentd:没有这样的主机
我发现了此问题(),它将解释您遇到的行为。尝试此解决方案后,我失去了对我的容器的任何控制,它变得不可能停止,杀死或rm…我有完全相同的问题。你找到解决办法了吗?