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


116

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

Answers:


190

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

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

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


3
有很多类似的文件夹004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff。如何知道特定容器要看哪个文件夹?
Praveen Sripati

3
@PraveenSripati如果需要,则在第一列中显示运行容器的容器IDdocker ps
CS

1
@PraveenSripati write docker ps,您将获得所有可用的容器及其ID。复制所需容器的ID,然后复制/var/lib/docker/containers/run ls | grep <paste the copied docker ID>。然后您会看到该码头集装箱
TheLebDev

cd /var/lib/docker/containers/ -bash:cd:/ var / lib / docker / containers /:权限被拒绝 sudo cd /var/lib/docker/containers/ sudo:cd:命令未找到
canbax

2
@Chris我必须做docker ps --no-trunc才能看到完整的ID
Dan Z

97

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

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

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

固定为日志保留的空间量

这取自“ 请求清除日志历史记录的功能(issue 1083)”):

Docker 1.8和docker-compose 1.4已经存在一种使用docker compose日志驱动程序和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"

在版本为'2'的docker compose文件中,语法稍有变化:

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

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

1
简短版本:docker inspect -f'{{.LogPath}}'$ INSTANCE_ID
Bienvenido David

12

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

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

(您可能需要一个sudobefore ls)。


我被拒绝了。
Shakedk

1
在末尾添加sudo有助于: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk '18

2

为了用更少的钱直接查看日志文件,我使用:

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

以./viewLogs.sh CONTAINERNAME的身份运行


2

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


这是运行本地容器进行开发时使用的容器!谢谢-很难找到此信息
Percy

1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.