我使用的是带有本机 docker 安装的 Windows 10。
我正在寻找 docker 保存容器日志的位置。
在 Linux 中,Docker 容器日志文件位于以下位置:
/var/lib/docker/containers/container-id/container-id-json.log
但是我在 Windows 10 中哪里可以找到它?
对于我来说,在版本 4.9.1 (81317)、Windows 10 21H2、WSL 2 模式上使用 Docker Desktop for Windows,容器的文件夹位于
\\wsl$\docker-desktop-data\data\docker\containers
与其他略有不同。
首先检查这些日志是否存在(如此处建议):
C:\ProgramData\docker\containers\[container_ID]\[container_ID]-json.log
2019:Docker
C:\ProgramData\docker
是 Root Dir
报道的 docker info
。DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\data\docker
关于通过 Hyper-v 的 Docker Linux,请检查“如何删除 Docker 容器日志文件(Windows 或 Linux)”是否有帮助(来自 Jon Gallant):
- 运行 dockerspect 以查找 Docker 日志文件位置
- 找到“Docker Root Dir”值,我的是/var/lib/docker
您的 docker 日志文件路径应该是
,但如果不是,请在下面的命令中更改它。/var/lib/docker
find /var/lib/docker/containers/ -type f -name "*.log"
您在此图中看到的命令基于“如何通过 SSH 连接到 Windows 上的 Docker VM (MobyLinuxVM)”
从技术上讲,我们不会通过 SSH 进入虚拟机,我们将创建一个具有完全根访问权限的容器,然后从那里访问文件系统。在那里执行find命令,你应该可以找到日志。
获取可访问 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
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-...
。
docker 容器的路径是正确的,谢谢@craftsmannadeem
\\wsl$\docker-desktop-data\version-pack-data\community\docker\containers
del /s \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers\*-json.log
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
...
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 运行它时,代理能够在安装路径中找到日志。