docker日志驱动 docker swarm集群日志管理ELK实战

文章浏览阅读7.6k次,点赞2次,收藏7次。本文介绍了如何在Docker Swarm集群中管理日志

docker默认日志管理

docker部署完成后,运行docker info命令,如下图所示:

上图中红框内的”json-file”,指的是当启动某个容器时,如果不特别指定容器所采用的log驱动,则使用json-file这种方式。当采用这种方式的容器在创建时,docker daemon会首先在宿主机上创建一个与这个容器相关联的文件,当容器运行时,docker daemon会转储容器在运行过程中向stdout与stderr输出的内容,并保存在刚才创建的那个文件中。当在宿主机中运行“docker logs -f 容器名”时,docker daemon就会跟踪宿主机文件的内容,并显示在终端上。

以nginx为例,首先看一下Dockerfile文件,会发现如下内容:

# forward request and error logs to docker log collectorRUN ln -sf /dev/stdout /var/log/nginx/access.log 	&& ln -sf /dev/stderr /var/log/nginx/error.log

nginx默认会将日志输出到文件/var/log/nginx/access.log与/var/log/nginx/error.log。在以上代码中,这两个文件分别被软件链接到了stdout与stderr,实际结果就相当于nginx直接将日志输出到标准输出与标准错误输出。如果在nginx的Dockerfile中没有以上内容的话,则nginx在运行过程中,实际会把日志写入到容器的可读写层中而不是容器的stdout与stderr,这样json-file驱动就拿不到到数据,运行docker logs命令的话也不会看到日志输出。

以上是docker默认管理容器日志的方式。在docker集群中,容器的数量很多,容器的生命周期及运行时进驻的node也是动态变化的,以上方式并不能满足大规模docker集群的日志管理要求。

创建docker swarm集群

参考创建包含三个node的docker集群,结果如下图所示:

原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/247.html

(0)
筱凯筱凯
上一篇 2024 年 7 月 11 日
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,500M大带宽限量抢购  >>点击进入