有没有办法确定我的 macOS 机器上 docker 卷的大小?

Is there a way to determine the size of a docker volume on my macOS machine?

我知道 docker volume lsdocker inspect -s,但前者不显示尺寸信息,而后者即使有 --size 选项,也会忽略它卷。

有没有我遗漏的东西?

这个:

docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere

将 return 卷在主机上的安装点。因此,要获得大小,只需执行以下操作:

du -sh $(docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere)

Federkun 回答的第一步对我有用,它返回了如下内容:

/var/lib/docker/volumes/f4678f...b87/_data

但是当我尝试时

du -sh $(docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere)

它返回了一个

du: /var/lib/docker/volumes/f4678f...b87/_data: No such file or directory

事实证明 Docker 在 macOS 上的工作方式不同。根据 ,在我可以 运行 du -sh 命令之前,我必须先 screen 进入 MacOS 使用的 docker 虚拟机。您可以通过 运行ning

sudo screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

然后你可以运行

du -sh /var/lib/docker/volumes/f4678f...

最终得到卷的大小。

您可以使用:

docker system df -v

更多信息请见https://docs.docker.com/engine/reference/commandline/system_df/

基于 Federkun 的回答:

docker run --rm -v /:/vm-root alpine du -sH /vm-root/$(docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere)

正如@MikeWu 的回答所指出的, 可以看到 Docker 卷的大小:

docker system df -v

但必须滚动一下才能找到 Local Volumes space usage: 部分。 使用管道 sed 命令,例如:

docker system df -v | sed -n '/VOLUME NAME/,/^ *$/p'

将有助于提高可读性并减少对感兴趣部分的输出 - 仅从 VOLUME NAME 打印到第一个空行。