带有容器日志的日志文件在哪里?

时间:2015-10-08 13:30:23

标签: docker docker-compose

我使用docker-compose运行多个容器。我可以使用命令docker-compose logs查看应用程序日志。但是,我想访问原始日志文件,例如将其发送到某个地方?它在哪里?我猜这是每个容器(内部容器?)的单独日志,但我可以在哪里找到它?

9 个答案:

答案 0 :(得分:129)

可以在以下位置找到容器的日志:

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

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

答案 1 :(得分:69)

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

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

并且,如果您试图找出日志管理其集体大小的位置,或者调整日志记录本身的参数,您将发现以下相关内容。

修复为日志保留的空间量

这取自Request for the ability to clear log history (issue 1083)):

  

Docker 1.8和docker-compose 1.4已经存在一种使用docker compose log driver和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撰写版本&#39; 2&#39; ,语法改变了一点:

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未终止的可能问题

  • issue 1866:如果容器已停止,则logs命令不会退出

答案 2 :(得分:6)

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

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

sudo之前可能需要ls

答案 3 :(得分:2)

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

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

以./viewLogs.sh CONTAINERNAME

运行

答案 4 :(得分:0)

截至2018年8月22日,日志位于:

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

docker inspect <containername> | grep log

答案 7 :(得分:0)

要查看每个容器的日志大小,可以使用这个 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

答案 8 :(得分:0)

这里是

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