我的 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:
Run Code Online (Sandbox Code Playgroud)
当我使用 启动应用程序时docker-compose up,网络服务器存在错误消息ERROR: for public-site Cannot start service public-site: failed to initialize logging driver: dial tcp 127.0.0.1:24224: connect: connection denied。
另一方面,当我从 fluentd ( ports: 24224:24224)发布端口时,它可以工作。问题是我不想在主机上发布这些端口,因为它绕过了 linux 防火墙(即它向所有人公开了 fluentd 端口,请参阅此处)。
这令人困惑,因为公开端口应该使其可用于网络中的每个容器。我使用的是fluentd 和网络服务器之间的内部网络,所以我希望 fluentd 的暴露端口就足够了(事实并非如此)。
当我连接到 webserver 容器时,我可以 ping 并解析 fluentd 容器,所以有一个连接。然而,由于某些原因,在启动时它不会接受没有已发布端口的 fluentd 配置。
如果您位于容器中,与 127.0.0.1 的通信始终会出现问题。我在文档中发现这个解释比我做的要好得多:
要将 Fluentd 驱动程序用作默认日志记录驱动程序,请在 daemon.json 文件中将 log-driver 和 log-opt 键设置为适当的值,该文件位于 Linux 主机上的 /etc/docker/ 或 C:\ProgramData\docker Windows Server 上的 \config\daemon.json。有关使用 daemon.json 配置 Docker 的更多信息,请参阅 +daemon.json。
以下示例将日志驱动程序设置为 Fluentd 并设置 fluenced-address 选项。
Run Code Online (Sandbox Code Playgroud){ "log-driver": "fluentd", "log-opts": { "fluentd-address": "fluentd:24224" } }
源代码:https: //docs.docker.com/config/containers/logging/fluidd/
编辑:这一直有效,直到您希望主机上有一个应用程序与 dockerized fluidd 通信(然后这是一个痛苦)
| 归档时间: |
|
| 查看次数: |
3649 次 |
| 最近记录: |