简单的问题:有没有docker命令可以查看一个volume里面的文件?
我运行 docker for windows,它在我的机器上创建了一个 MobyLinuxVM 来运行 Docker。我无法像使用 Ubuntu VM(我也在我的机器上运行)那样在这台机器上建立远程桌面连接。
因此,我看不到一种方法来查看主机卷中的内容(因为它们实际上在 MobyLinuxVM 中),就像我在我的 Ubuntu VM 上运行 docker 一样,我可以远程访问机器并查看。
因此,有没有一种方法可以运行某种
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_NAME
如docker volume ls
所示。
我正在查看运行 Docker 19.03.5 - YMMV 的 Ubuntu 18.04 VM。
这不是问题的直接答案(因为它询问的是 docker 命令)但万一有人像我一样到达这里:
如果您有 Docker Desktop(至少在 Windows 上),您可以使用 Docker Desktop GUI 探索卷。只需单击音量,然后切换到顶部的“数据”选项卡。
如果您只是想四处看看或复制文件,那么快速而简单。
你可以使用
docker volume inspect my-vol
.