如何在内部网络中在docker中运行fluentd
我的docker compose文件中有以下配置:如何在内部网络中在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
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…我有完全相同的问题。你找到解决办法了吗?