【问题标题】:Is there a way to determine the size of a docker volume on my macOS machine?有没有办法确定我的 macOS 机器上 docker 卷的大小?
【发布时间】:2019-12-17 05:35:47
【问题描述】:

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

我有什么遗漏吗?

【问题讨论】:

    标签: macos docker docker-volume


    【解决方案1】:

    正如@MikeWu 的回答所指出的, 可以通过以下方式查看 Docker 卷的大小:

    docker system df -v
    

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

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

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

    【讨论】:

      【解决方案2】:

      基于 Federkun 的回答:

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

      【讨论】:

      • 这也适用于 WSL2 上的 Docker。完美的。谢谢!
      【解决方案3】:

      你可以使用:

      docker system df -v
      

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

      【讨论】:

        【解决方案4】:

        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...
        

        最终获得卷大小。

        【讨论】:

          【解决方案5】:

          这个:

          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
          • 你在 ios 上,在 docker-machine 上吗?
          • 我在 MacOS 上,这是运行 docker 的机器。
          • 不,我没有使用虚拟机。我的容器正在我的机器上运行。
          • 感谢您的回答,Federkun。我弄清楚了 ssh'ing 进入虚拟机的细节(我什至不知道它存在)并将它们添加到这个问题的另一个答案中。
          猜你喜欢
          • 2018-04-02
          • 2020-03-17
          • 1970-01-01
          • 2020-12-05
          • 1970-01-01
          • 1970-01-01
          • 2021-04-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多