【发布时间】:2019-12-17 05:35:47
【问题描述】:
我知道docker volume ls 和docker inspect -s,但前者不显示大小信息,而后者即使有--size 选项,也会忽略它的体积。
我有什么遗漏吗?
【问题讨论】:
标签: macos docker docker-volume
我知道docker volume ls 和docker inspect -s,但前者不显示大小信息,而后者即使有--size 选项,也会忽略它的体积。
我有什么遗漏吗?
【问题讨论】:
标签: macos docker docker-volume
正如@MikeWu 的回答所指出的, 可以通过以下方式查看 Docker 卷的大小:
docker system df -v
但是必须滚动一下才能找到Local Volumes space usage: 部分。
使用管道sed 命令,例如:
docker system df -v | sed -n '/VOLUME NAME/,/^ *$/p'
将有助于提高可读性并减少对感兴趣部分的输出 - 仅从 VOLUME NAME 打印直到第一个空行。
【讨论】:
基于 Federkun 的回答:
docker run --rm -v /:/vm-root alpine du -sH /vm-root/$(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 上的工作方式有所不同。根据this answer,在我可以运行du -sh 命令之前,我必须先screen 进入MacOS 使用的docker 虚拟机。你可以通过运行来做到这一点
sudo screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
然后你就可以运行了
du -sh /var/lib/docker/volumes/f4678f...
最终获得卷大小。
【讨论】:
这个:
docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere
将返回您主机上的卷的挂载点。因此,要获得大小,只需要做:
du -sh $(docker volume inspect --format '{{ .Mountpoint }}' volumeNameHere)
【讨论】:
docker volume inspect --format '{{ .Mountpoint }}' my-volume-id 时,它返回/var/lib/docker/volumes/my-volume-id/_data,但du -sh $(docker volume inspect --format '{{ .Mountpoint }}' my-volume-id) 返回No such file or directory。