有没有办法列出 docker volume 中的文件?

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

简单的问题:有没有docker命令可以查看一个volume里面的文件?

我运行 docker for windows,它在我的机器上创建了一个 MobyLinuxVM 来运行 Docker。我无法像使用 Ubuntu VM(我也在我的机器上运行)那样在这台机器上建立远程桌面连接。

因此,我看不到一种方法来查看主机卷中的内容(因为它们实际上在 MobyLinuxVM 中),就像我在我的 Ubuntu VM 上运行 docker 一样,我可以远程访问机器并查看。

因此,有没有一种方法可以运行某种

docker volume
命令来列出每个卷中的内容?

docker docker-for-windows
4个回答
43
投票

您可以为此使用临时容器。我倾向于将 busybox 用于这些临时容器:

$ docker volume ls
DRIVER              VOLUME NAME
local               jenkins-home
local               jenkins-home2
local               jenkinsblueocean_jenkins-data
...

$ docker run -it --rm -v jenkins-home:/vol busybox ls -l /vol
total 428
-rw-r--r--    1 1000     1000           327 Jul 14  2016 com.dabsquared.gitlabjenkins.GitLabPushTrigger.xml
-rw-r--r--    1 1000     1000           276 Aug 17  2016 com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig.xml
-rw-r--r--    1 1000     1000           256 Aug 17  2016 com.nirima.jenkins.plugins.docker.DockerPluginConfiguration.xml
drwxr-xr-x   28 1000     1000          4096 Aug 17  2016 config-history
-rw-r--r--    1 1000     1000          6460 Aug 17  2016 config.xml
-rw-r--r--    1 1000     1000        174316 Jun  2 18:50 copy_reference_file.log
-rw-r--r--    1 1000     1000          2875 Aug  9  2016 credentials.xml
...

对于主机卷,您只需在

docker run
cli 中将卷挂载替换为主机目录名称(完全限定)。

$ docker run -it --rm -v /path/on/host:/vol busybox ls -l /vol

1
投票

不确定这有多广泛适用,但如果你有 root 访问权限,我刚刚发现你可以在

/var/lib/docker/volumes/<VOLUME_NAME>/_data
浏览卷的内容。
VOLUME_NAME
docker volume ls
所示。

我正在查看运行 Docker 19.03.5 - YMMV 的 Ubuntu 18.04 VM。


1
投票

这不是问题的直接答案(因为它询问的是 docker 命令)但万一有人像我一样到达这里:

如果您有 Docker Desktop(至少在 Windows 上),您可以使用 Docker Desktop GUI 探索卷。只需单击音量,然后切换到顶部的“数据”选项卡。

如果您只是想四处看看或复制文件,那么快速而简单。


0
投票

你可以使用

docker volume inspect my-vol
.

© www.soinside.com 2019 - 2024. All rights reserved.