Windows 10 和 Docker 容器日志/Docker 日志记录驱动程序

问题描述 投票:0回答:7

我使用的是带有本机 docker 安装的 Windows 10。

我正在寻找 docker 保存容器日志的位置。
在 Linux 中,Docker 容器日志文件位于以下位置:

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

但是我在 Windows 10 中哪里可以找到它?

docker windows-10
7个回答
32
投票

对于

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


16
投票

对于我来说,在版本 4.9.1 (81317)、Windows 10 21H2、WSL 2 模式上使用 Docker Desktop for Windows,容器的文件夹位于

\\wsl$\docker-desktop-data\data\docker\containers

与其他略有不同。


11
投票

首先检查这些日志是否存在(如此处建议):

C:\ProgramData\docker\containers\[container_ID]\[container_ID]-json.log

2019:Docker

C:\ProgramData\docker
Root Dir
报道的
docker info

2020:
DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\data\docker

(如 Ricardo Rivaldo评论中所述,适用于 Docker 版本 20.10+)
(另请参阅“在 Docker Desktop (Windows) 中定位数据卷”)

关于通过 Hyper-v 的 Docker Linux,请检查“如何删除 Docker 容器日志文件(Windows 或 Linux)”是否有帮助(来自 Jon Gallant):

  1. 运行 dockerspect 以查找 Docker 日志文件位置
  2. 找到“Docker Root Dir”值,我的是/var/lib/docker

您的 docker 日志文件路径应该是

/var/lib/docker
,但如果不是,请在下面的命令中更改它。

find /var/lib/docker/containers/ -type f -name "*.log"

https://blog.jongallant.com/2017/11/delete-docker-container-log-files/000330.png

您在此图中看到的命令基于“如何通过 SSH 连接到 Windows 上的 Docker VM (MobyLinuxVM)”

从技术上讲,我们不会通过 SSH 进入虚拟机,我们将创建一个具有完全根访问权限的容器,然后从那里访问文件系统。

    获取可访问 Docker Daemon 的容器
  • 以完全 root 访问权限运行容器
  • 切换到主机文件系统
打开命令提示符并执行以下命令:

docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh chroot /host

在那里执行find命令,你应该可以找到日志。


8
投票
对于

Windows 10 + Docker Desktop version 3.6.0

,日志和数据(工件)的虚拟路径是 
\\wsl$\docker-desktop-data\version-pack-data\community\docker
(您可以将其复制/粘贴到资源管理器导航栏中)。

日志位于

\\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\[containerID]\[containerID]-json.logs


数据位于

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\[volumeID]\_data


如何获取containerID:

您可以通过在命令提示符中运行

container ID

 来找到 
docker ps
(截断的)。您还可以通过单击 DockerDesktop 上容器名称旁边的 
CLI
 按钮来找到它,id 将在弹出的 cmd 窗口的标题中。
获得 id 后,您可以导航到工件目录下的 
containers\[containerID]
(上面的 
\\wsl$\docker-...
)。日志文件将具有 
.log
 扩展名,其名称中将包含 
containerID
。请记住,它将是一种丰富的 json 格式,因此不易阅读。

如何获取volumeID:

要查找容器的数据(例如kafka代理主题),您需要找到存储数据的卷的id。为此,您需要单击 DockerDesktop 中的容器,然后单击

INSPECT

(右上角)。然后,您可以向下滚动以查找 
Mounts
 配置条目。每个挂载都会有一个volumeID(与containerID不同),并且该volumeID将是与此类似的路径的一部分
/var/lib/docker/volumes/71f7a5992c58fdcf229c3848acb014712f34fab380bc7c712cf5a0a632fe9110/_data
volumeID
 这里是
71f7a5992c58fdcf229c3848acb014712f34fab380bc7c712cf5a0a632fe9110
。
然后,您可以使用 
volumeID
 并导航到数据所在的工件目录(上面的 
volumes\[volumeID]
)下的 
\\wsl$\docker-...


4
投票
对于想要删除 WSL 2 上所有 Docker 日志文件的 Windows 用户。

docker 容器的路径是正确的,谢谢@craftsmannadeem

\\wsl$\docker-desktop-data\version-pack-data\community\docker\containers


这里是在 Windows 上执行以删除所有日志文件的命令:

del /s \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\*-json.log


再见 Docker 日志:

File was deleted - \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\2012efd0ccfb8aed6291dd9a3b7b5aef507b6af4fce5b85e9306f45980db9531\2012efd0ccfb8aed6291dd9a3b7b5aef507b6af4fce5b85e9306f45980db9531-json.log File was deleted - \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\9e627f1fe8f3c3ab85c64f85f93942d1f077e9a6e2896b51df782b0c0c3777d1\9e627f1fe8f3c3ab85c64f85f93942d1f077e9a6e2896b51df782b0c0c3777d1-json.log File was deleted - \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\6ea8f3cb354c199bc719701f8f1e75c333f81cd2f03dca0c7a626cbcbf9ed5a0\6ea8f3cb354c199bc719701f8f1e75c333f81cd2f03dca0c7a626cbcbf9ed5a0-json.log ...
    

2
投票
如果您将 docker-compose 与 windows+wsl 一起使用,在我的情况下,日志监控代理(也在 docker 中作为容器运行)无法找到日志文件,即使日志路径已安装为卷。

volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker:/var/lib/docker
日志监控代理找不到日志

/var/lib/docker/containers/**/*.log
我的问题是,

我正在 wsl shell 中运行日志监控代理的 docker-compose up

 命令。当我从 Windows powershell 或 cmd 运行它时,代理能够在安装路径中找到日志。


0
投票
对于window系统日志位于C:\ProgramData\Docke
© www.soinside.com 2019 - 2024. All rights reserved.