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

tva*_*rin 14 docker windows-10

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

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

/var/lib/docker/containers/container-id/container-id-json.log
Run Code Online (Sandbox Code Playgroud)

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

小智 14

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

\\wsl$\docker-desktop-data\data\docker\containers
Run Code Online (Sandbox Code Playgroud)

与其他人略有不同。


cra*_*eem 13

为了 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

这是一个例子:

在此处输入图片说明

  • 这实际上对我有用。提示:在文件资源管理器的地址栏上,输入 \\wsl$ (4认同)

小智 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

如何获取容器ID:

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

如何获取卷ID:

要查找容器的数据(例如 kafka 代理主题),您需要查找存储数据的卷的 id。为此,您需要单击 DockerDesktop 中的容器,然后单击INSPECT(右上角)。然后您可以向下滚动以查找Mounts配置条目。每个挂载都会有一个volumeID(与containerID不同),并且该volumeID将是与此类似的路径的一部分/var/lib/docker/volumes/71f7a5992c58fdcf229c3848acb014712f34fab380bc7c712cf5a0a632fe9110/_datavolumeID这里存在71f7a5992c58fdcf229c3848acb014712f34fab380bc7c712cf5a0a632fe9110。然后,您可以获取volumeID并导航到数据所在的volumes\[volumeID]工件目录(上面)。\\wsl$\docker-...


Von*_*onC 6

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

C:\ProgramData\docker\containers\[container_ID]\[container_ID]-json.log
Run Code Online (Sandbox Code Playgroud)

DockerC:\ProgramData\dockerRoot Dirdocker info.

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

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

您的 docker 日志文件路径应该是/var/lib/docker,但如果不是,请在下面的命令中更改它。

find /var/lib/docker/containers/ -type f -name "*.log"
Run Code Online (Sandbox Code Playgroud)

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

您在此图像中看到的命令基于“ How to SSH into the Docker VM (MobyLinuxVM) on Windows

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

  • 获取可以访问 Docker Daemon 的容器
  • 运行具有完全根访问权限的容器
  • 切换到主机文件系统

打开命令提示符并执行以下命令:

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
Run Code Online (Sandbox Code Playgroud)

在那里执行 find 命令,您应该会找到日志。

  • 谢谢你。事实上,如果我切换到 Windows 容器模式,我可以在“C:\ProgramData\docker”中找到日志。但是我说错了,我使用 Windows 10 和 Docker Desktop 和 Linux 容器模式。我想了解如何访问 Hyper-V / MobyVM 的 /var/lib/docker/containers/[container_ID]\[container_ID]-json.log 中的日志 谢谢! (3认同)