侧边栏壁纸
博主头像
★街角晚灯★博主等级

博观而约取 厚积而薄发

  • 累计撰写 437 篇文章
  • 累计创建 181 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker容器日志的常规操作

WinJay
2023-08-16 / 0 评论 / 0 点赞 / 89 阅读 / 3683 字 / 正在检测是否收录...
温馨提示:
文章发布较早,内容可能过时,阅读注意甄别。。。。

Docker容器日志的常规操作

image-20230816184452403

docker启动容器后,默认Docker的日志会发送到容器的标准输出设备(STDOUT)和标准错误设备(STDERR),其中STDOUT和STDERR实际上就是容器的控制台终端。可以通过docker logs命令来查看某个容器输出的日志,具体如下:

  • 静态查看日志-不更新

docker logs 容器ID

  • 动态查看静态-实时更新 docker logs -f 容器ID

我们可以在 docker run 命令中通过 --log-driver 参数来设置具体的 Docker 日志驱动,也可以通过 --log-opt 参数来指定对应日志驱动的相关选项。就拿 json-file 来说,其实可以这样启动 Docker 容器:

docker run -d -p 80:80 \
--log-driver json-file \
--log-opt max-size=5m \
--log-opt max-file=3 \
--name nginx \
nginx

通过 --log-opt 参数为 json-file 日志驱动添加了两个选项,max-size=5m 表示 JSON 文件最大为 5MB(超过 5MB 就会自动生成新文件),max-file=3 表示 JSON 文件最多为3个(超过3个就会自动删除多余的旧文件)

除了在启动 Docker 容器时,可指定日志驱动以外,还可以通过修改 Docker 配置文件来指定日志驱动。

参考链接

Docker配置

# 配置文件修改:
vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://d3is0bty.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io"],
    "insecure-registries": ["http://hub.nercoa.com"],
    "data-root": "/mnt/DockerRootDir",
    "storage-driver": "overlay2",
    "log-driver":"json-file",
    "log-opts": {"max-size":"5m", "max-file":"3"}
}

#  "graph": "/mnt/DockerRootDir", 亦可指定Docker的根目录位置。

写入指定容器在某时间段的日志

# 将最近225分钟的日志写到file.txt文件
docker logs --since 225m 4261ce7f5c14 >>file.txt

然后根据当前的docker使用的日志机制来查看docker的日志。

如果使用的是json-file机制:则docker启动后日志会在 /var/lib/docker/containers/容器ID/容器ID-json.log位置,也可以通过 inspect 容器ID找到LogPath项即是日志文件路径。

如果使用的是journalctl机制:则需要了解日志管理工具journalctl的使用,journalctl是centos7上专有的日志管理工具,它从message文件里读取信息。centos7中使用Systemd统一管理所有Unit的启动日志。然后可以只用journalctl一个命令来查看所有日志(可区分内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。在CoreOS中使用

# 查看docker容器日志。
journalctl -u docker.service

#通过容器特征查看具体容器日志
journalctl -u docker CONTAINER_TAG=mytag
journalctl -u docker CONTAINER_ID=13211dsdfwwq
journalctl -f -u docker CONTAINER_NAME=server9

查看日志的几种场景

  • docker动态查看日志最后100行:
docker logs -f -t --tail=100 Lit_Message

image-20230816183209326

  • 查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2023-08-08" --tail=100 CONTAINER_ID

image-20230816183817110

  • 查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID

image-20230816183934522

  • 查看某时间之后的日志:
docker logs -t --since="2023-08-08T10:08:08" CONTAINER_ID

image-20230816184058038

查看某时间段日志:

$ docker logs -t --since="2022-10-20T10:08:08" --until "2022-10-20T11:08:08" CONTAINER_ID
0

评论区