docker:检查 space 留在容器的卷上

docker: Check space left on volume from container

我在容器中安装了一个卷。该卷具有固定大小,容器将数据写入该卷。如何从容器中检查卷上剩余的 space。

我可以 运行 在主机 运行 宁 docker 上执行命令,但是是否可以从安装卷的容器内部执行此操作?

您基本上可以像在普通 Linux 机器上那样获得容量:df -h 在容器内执行:

先决条件 A: 创建固定大小的卷

docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 fixed-size-volume

先决条件 B: 将卷挂载到容器中任何需要挂载点的位置(/var/fixed-mount-point 在我的示例中)

docker run -it --rm --mount source=fixed-size-volume,target=/var/fixed-mount-point  alpine sh

第 1 步: 列出容器内的挂载并按挂载点的名称进行过滤(自从我使用 -it 以来,我的容器内已经有了一个终端。要打开一个终端,你可以使用 docker exec -ti <containerID> sh

/ # df -h | grep fixed
tmpfs                   100.0M         0    100.0M   0% /var/fixed-mount-point

第 2 步: 在挂载点创建一个虚拟文件:我使用 dd 创建了一个 1MB 的文件

dd if=/dev/zero of=/var/fixed-mount-point/file.txt count=1024 bs=1024

步骤 3:再次检查卷的容量。注意从 0% 到 1% 的变化

/ # df -h | grep fixed
tmpfs                   100.0M      1.0M     99.0M   1% /var/fixed-mount-point

假设您使用以下命令创建卷:

docker volume create --driver local \
--opt type=tmpfs \
--opt device=tmpfs \
--opt o=size=100m,uid=1000 \
data_vol

您可以运行一个docker使用卷(shell命令用于模拟数据创建):

docker run --name vol_test --rm -v data_vol:/data busybox sh -c "while true; do df -h | grep /data ; sleep 1; dd if=/dev/zero  bs=1M  count=1 >> /data/test;done"

您也可以使用 exec 从外部跟踪卷的演变:

docker exec vol_test df -h | grep /data