包含来自容器的日志的日志文件在哪里?

我正在使用 docker-compose运行几个容器。我可以通过命令 docker-compose logs查看应用程序日志。然而,我想访问原始日志文件发送到某处,例如?它在哪里?我想每个集装箱都有单独的日志(集装箱内部?)但我在哪里能找到它呢?

160343 次浏览

您可以通过 docker inspect查看每个容器的日志位置:

docker inspect --format='\{\{.LogPath}}' $INSTANCE_ID

并且,如果您试图找出日志在哪里管理它们的集合大小,或者调整日志本身的参数,您会发现以下内容是相关的。

固定为日志保留的空间量

以下摘自 请求清除日志历史记录的能力(问题1083)) :

Docker 1.8和 Docker-compose 1.4已经有一种方法可以使用 码头作业日志驱动程序和 log-opt max-size 来限制日志大小:

mycontainer:
...
log_driver: "json-file"
log_opt:
# limit logs to 2MB (20 rotations of 100K each)
max-size: "100k"
max-file: "20"

在 docker 的“2”版本的组合文件中,语法发生了一些变化:

version: '2'
...
mycontainer:
...
logging:
#limit logs to 200MB (4rotations of 50M each)
driver: "json-file"
options:
max-size: "50m"
max-file: "4"

(注意,在这两种语法中,数字都用引号表示为字符串)

docker-compose logs没有终止的可能问题

  • 问题1866 : 如果容器已经停止,则命令 logs不退出

集装箱的日志可以在以下地方找到:

/var/lib/docker/containers/<container id>/<container id>-json.log

(如果使用默认的日志格式 json)

要直接在 less 中查看日志文件,我使用:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

./viewLogs.sh CONTAINERNAME运行

要查看每个容器的日志占用了多少空间,请使用以下命令:

docker ps -qa | xargs docker inspect --format='\{\{.LogPath}}' | xargs ls -hl

(在 ls之前你可能需要一个 sudo)。

截至2018年8月22日,日志可以在以下地方找到:

/data/docker/containers/<container id>/<container id>-json.log

在 Windows 上,默认位置是: C:\ProgramData\Docker\containers\<container-id>-json.log

docker inspect <containername> | grep log

要查看每个容器的日志大小,可以使用 bash 命令:

for cont_id in $(docker ps -aq); do cont_name=$(docker ps | grep $cont_id | awk '{ print $NF }') && cont_size=$(docker inspect --format='\{\{.LogPath}}' $cont_id | xargs sudo ls -hl | awk '{ print $5 }') && echo "$cont_name ($cont_id): $cont_size"; done

输出示例:

container_name (6eed984b29da): 13M
elegant_albattani (acd8f73aa31e): 2.3G

这里是

Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61

这么说吧

DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker

中可以找到容器日志的位置

DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log

这里有一个例子

enter image description here