有没有办法列出 docker 卷内的文件?

Is there a way to list files inside a docker volume?

简单的问题:是否有docker查看卷内文件的命令?

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

因此,我无法查看主机卷中的内容(因为它们实际上在 MobyLinuxVM 中),就好像我 运行 docker 在我的 Ubuntu VM 我可以远程到机器上看一下。

因此,有没有一种方法可以 运行 某种 docker volume 命令来列出每个卷中的内容?

您可以为此使用临时容器。我倾向于将 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

不确定这有多广泛适用,但如果您有 root 访问权限,我刚刚发现您可以在 /var/lib/docker/volumes/<VOLUME_NAME>/_data 浏览卷的内容。 VOLUME_NAMEdocker volume ls所示。

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

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

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

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