当前位置: 首页 > 知识库问答 >
问题:

修剪后磁盘空间仍然满

越麒
2023-03-14

修剪docker时遇到了问题。构建映像后,我运行“docker系统修剪-卷-a-f”,但它不会从“/var/lib/docker/overlay2”释放空间。请参阅下面

在构建映像之前,请先释放磁盘空间

    ubuntu@xxx:~/tmp/app$ df -hv
    Filesystem      Size  Used Avail Use% Mounted on
    udev            1.9G     0  1.9G   0% /dev
    tmpfs           390M  5.4M  384M   2% /run
    /dev/nvme0n1p1   68G   20G   49G  29% /
    tmpfs           2.0G  8.0K  2.0G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
    tmpfs           390M     0  390M   0% /run/user/1000
    ubuntu@xxx:~/tmp/app$ sudo du -hs /var/lib/docker/overlay2
    8.0K    /var/lib/docker/overlay2

塑造形象

    ubuntu@xxx:~/tmp/app$ docker build -f ./Dockerfile .
    Sending build context to Docker daemon  1.027MB
    Step 1/12 : FROM mhart/alpine-node:9 as base
    9: Pulling from mhart/alpine-node
    ff3a5c916c92: Pull complete 
    c77918da3c72: Pull complete 
    Digest: sha256:3c3f7e30beb78b26a602f12da483d4fa0132e6d2b625c3c1b752c8a8f0fbd359
    Status: Downloaded newer image for mhart/alpine-node:9
     ---> bd69a82c390b
    .....
    ....
    Successfully built d56be87e90a4

图像生成后的大小:

    ubuntu@xxx:~/tmp/app$ df -hv
    Filesystem      Size  Used Avail Use% Mounted on
    udev            1.9G     0  1.9G   0% /dev
    tmpfs           390M  5.4M  384M   2% /run
    /dev/nvme0n1p1   68G   21G   48G  30% /
    tmpfs           2.0G  8.0K  2.0G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
    tmpfs           390M     0  390M   0% /run/user/1000
    ubuntu@xxx:~/tmp/app$ sudo du -hs /var/lib/docker/overlay2
    3.9G    /var/lib/docker/overlay2
    ubuntu@xxx:~/tmp/app$ docker system prune -af --volumes
    Deleted Images:
    deleted: sha256:ef4973a39ce03d2cc3de36d8394ee221b2c23ed457ffd35f90ebb28093b40881
    deleted: sha256:c3a0682422b4f388c501e29b446ed7a0448ac6d9d28a1b20e336d572ef4ec9a8
    deleted: sha256:6988f1bf347999f73b7e505df6b0d40267dc58bbdccc820cdfcecdaa1cb2c274
    deleted: sha256:50aaadb4b332c8c1fafbe30c20c8d6f44148cae7094e50a75f6113f27041a880
    untagged: alpine:3.6
    untagged: alpine@sha256:ee0c0e7b6b20b175f5ffb1bbd48b41d94891b0b1074f2721acb008aafdf25417
    deleted: sha256:d56be87e90a44c42d8f1c9deb188172056727eb79521a3702e7791dfd5bfa7b6
    deleted: sha256:067da84a69e4a9f8aa825c617c06e8132996eef1573b090baa52cff7546b266d
    deleted: sha256:72d4f65fefdf8c9f979bfb7bce56b9ba14bb9e1f7ca676e1186066686bb49291
    deleted: sha256:037b7c3cb5390cbed80dfa511ed000c7cf3e48c30fb00adadbc64f724cf5523a
    deleted: sha256:796fd2c67a7bc4e64ebaf321b2184daa97d7a24c4976b64db6a245aa5b1a3056
    deleted: sha256:7ac06e12664b627d75cd9e43ef590c54523f53b2d116135da9227225f0e2e6a8
    deleted: sha256:40993237c00a6d392ca366e5eaa27fcf6f17b652a2a65f3afe33c399fff1fb44
    deleted: sha256:bafcf3176fe572fb88f86752e174927f46616a7cf97f2e011f6527a5c1dd68a4
    deleted: sha256:bbcc764a2c14c13ddbe14aeb98815cd4f40626e19fb2b6d18d7d85cc86b65048
    deleted: sha256:c69cad93cc00af6cc39480846d9dfc3300c580253957324872014bbc6c80e263
    deleted: sha256:97a19d85898cf5cba6d2e733e2128c0c3b8ae548d89336b9eea065af19eb7159
    deleted: sha256:43773d1dba76c4d537b494a8454558a41729b92aa2ad0feb23521c3e58cd0440
    deleted: sha256:721384ec99e56bc06202a738722bcb4b8254b9bbd71c43ab7ad0d9e773ced7ac
    untagged: mhart/alpine-node:9
    untagged: mhart/alpine-node@sha256:3c3f7e30beb78b26a602f12da483d4fa0132e6d2b625c3c1b752c8a8f0fbd359
    deleted: sha256:bd69a82c390b85bfa0c4e646b1a932d4a92c75a7f9fae147fdc92a63962130ff

    Total reclaimed space: 122.2MB

它只释放了122.2MB。修剪后的尺寸:

    ubuntu@xxx:~/tmp/app$ df -hv
    Filesystem      Size  Used Avail Use% Mounted on
    udev            1.9G     0  1.9G   0% /dev
    tmpfs           390M  5.4M  384M   2% /run
    /dev/nvme0n1p1   68G   20G   48G  30% /
    tmpfs           2.0G  8.0K  2.0G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
    tmpfs           390M     0  390M   0% /run/user/1000
    ubuntu@xxx:~/tmp/app$ sudo du -hs /var/lib/docker/overlay2
    3.7G    /var/lib/docker/overlay2

如您所见,共有0个容器/图像:

    ubuntu@xxx:~/tmp/app$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    ubuntu@xxx:~/tmp/app$ docker images -a
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

但是"/var/lib/docker/overlay2"的大小只从3.9G减少到3.7G。如果我构建多个映像,每次都会增加。这是我正在构建的dockerfile:

    FROM mhart/alpine-    node:9 as base
    RUN apk add --no-cache make gcc g++ python
    WORKDIR /app
    COPY package.json /app
    RUN npm install --silent

    # Only copy over the node pieces we need from the above image
    FROM alpine:3.6
    COPY --from=base /usr/bin/node /usr/bin/
    COPY --from=base /usr/lib/libgcc* /usr/lib/libstdc* /usr/lib/
    WORKDIR /app
    COPY --from=base /app .
    COPY . .
    CMD ["node", "server.js"]

为什么不清理Overly2文件夹?我该怎么办?有解决办法吗?这是已知的臭虫吗?

共有3个答案

尹臻
2023-03-14

docker系统prune不会删除:

  • 运行容器
  • 标记图像

它删除的主要内容是停止的容器和未标记的图像。您可以将标志传递给docker system prune以删除图像和卷,只需意识到图像可能已经在本地构建并需要重新创建,卷可能包含您想要备份/保存的数据:

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
  -a, --all             Remove all unused images not just dangling ones
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes

这仍然没有删减的是:

  • 流动集装箱

与正在运行的容器相关联的其他存储是容器日志(容器上的docker日志显示了这些)和容器所做的文件系统更改(docker diff显示了容器文件系统中已更改的内容)。若要清理日志,请参阅以下答案,了解如何为所有新容器配置默认限制,以及手动删除正在运行的容器中的日志的风险。

在这种情况下,即使所有容器都被停止和删除,看起来仍然有overlay2中的文件。首先,意识到这些只是文件的目录,你可以深入每一个目录,看看有什么文件。这些层来自覆盖文件系统,所以删除它们可能会导致环境崩溃,因为它们是从docker文件系统的其他部分引用的。我可以想到几个可能的原因:

  • docker引擎损坏,可能文件夹在docker外部被手动删除,导致它无法跟踪正在使用的各种覆盖目录。或者从填充硬盘驱动器的引擎开始创建一个层并丢失了它的踪迹。重新启动docker引擎可能有助于重新同步这些文件夹。
  • 您正在查看不同的docker引擎。例如,如果您正在运行无根容器,它们位于用户的主目录中,而不是 /var/lib/docker.或者,如果您配置docker上下文或设置$DOCKER_HOST,您可能正在对远程docker引擎运行命令,而没有修剪本地目录。

因为您已经删除了所有容器,并且没有其他数据需要保留,比如卷,所以完全重置docker是安全的。这可以通过以下方式实现:

# DANGER, this will reset docker, deleting all containers, images, and volumes
sudo -s
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
exit

重要的是,您不应该从overlay2中删除单个文件和目录。如果你这么做了,会出现什么问题,请参阅下面的答案。相反,上面是docker文件夹返回到初始空状态的完整擦除。

袁晋鹏
2023-03-14

在Docker Desktop for Mac上,我突然一直碰到这个问题。将~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw中的映像调整为更大(默认为54Gb,将其提升为128Gb),至少目前允许我继续进行。

我能找到的指导主要是建议如果你遇到硬盘的大小限制,就减小它的大小,但是我有足够的空间。

葛高澹
2023-03-14

这可能是日志或overlay2文件夹中一些不需要的文件,而不是Docker映像的问题。

尝试sudo du/var/lib/docker/overlay2

以下内容对我很有用——向我展示确切的罪犯文件夹:

sudo-scd/df-h

cd到罪犯文件夹,然后rm*

 类似资料:
  • 我有一个docker正在运行,它会给我磁盘空间警告。如何增加docker空间并重新开始?(同一容器) 假设我想给15gb。

  • 守护进程系统线程[Java2D Disposer](暂停(异常OutOfMemoryError))拥有:Win32Graphics环境(id=116)拥有:FontStrikeDisposer(id=117)D3DGraphicsDevice.getDeviceCaps(int)line: 108 D3DGraphicsDevice.createDevice(int)line: 87 Win32G

  • 本文向大家介绍Linux 发邮件磁盘空间监控(python),包括了Linux 发邮件磁盘空间监控(python)的使用技巧和注意事项,需要的朋友参考一下 核心代码:

  • 本文向大家介绍linux 查看磁盘空间大小命令,包括了linux 查看磁盘空间大小命令的使用技巧和注意事项,需要的朋友参考一下 Ubuntu 查看文件以及磁盘空间大小管理 (1)查看文件大小  查看当前文件夹下所有文件大小(包括子文件夹) 查看指定文件夹下所有文件大小(包括子文件夹) 查看指定文件大小 查看指定文件夹大小 用法:du [选项]... [文件]... 或:du [选项]... --f

  • 问题内容: 消息1101,级别17,状态10,第12行由于文件组“ DEFAULT”中的磁盘空间不足,无法为数据库“ TEMPDB”分配新页。通过在文件组中放置对象,将其他文件添加到文件组或为文件组中的现有文件设置自动增长来创建必要的空间。 用普通的英语是什么意思。 问题答案: 我发现,TempDB爆炸式增长的正常原因是查询,无论是临时查询还是存储过程查询,该查询中都有意外的多对多联接,有人将其称

  • 我正在设置一个新的IBM集成总线服务器,并正在努力将BAR文件部署到一个执行组,并在尝试将多个BAR部署到执行组时收到“足够的磁盘空间”类型的错误消息,但当将相同的BAR部署到一个空的执行组时,它会成功。这种情况发生在多个BAR文件和多个服务器上。它是非常可重复的。我觉得我错过了这些执行组的IIB配置步骤。我应该提到这种配置类型适用于IBMMB 6.1——我有完全相同的java代码,只是将平台从M