在群晖的 /volume1/@docker/btrfs 文件夹中,存储了 Docker 使用的 Btrfs 文件系统相关的快照、镜像层和卷数据。随着 Docker 容器的使用,这个文件夹可能会占用大量存储空间。因此,清理这个文件夹需要小心,避免破坏 Docker 容器的正常运行。

以下是清理 btrfs 文件夹的方法和注意事项:


1. 自动清理未使用的 Docker 数据

最安全的方法是通过 Docker 提供的命令清理未使用的数据,这样不会直接影响 Docker 的正常运行。

清理未使用的镜像

Docker 镜像可能会堆积很多无用的旧版本,执行以下命令删除未被容器使用的镜像:

docker image prune -a

清理未挂载的卷

如果有未挂载的卷(即已经删除的容器所留下的数据卷),可以清理这些卷:

docker volume prune

清理未使用的所有资源

包括镜像、卷、网络以及停止的容器:

docker system prune -a --volumes

注意: 这个命令会清理所有未使用的资源,谨慎使用。


2. 手动检查和清理 Btrfs 文件夹

定位占用空间的具体文件

使用以下命令查看 btrfs 文件夹的占用情况:

du -sh /volume1/@docker/btrfs/*

这可以帮助你识别哪个子文件夹占用了最多空间。

手动清理孤立的 Btrfs 子卷

如果某些 Docker 容器或镜像已经被删除,但其对应的 Btrfs 子卷没有被清理,可以手动检查和删除。

  1. 查看所有 Btrfs 子卷:
  2. btrfs subvolume list /volume1/@docker/btrfs
  3. 确认无用的子卷(例如,已被删除的容器或镜像对应的子卷)。
  4. 删除孤立的子卷:
  5. btrfs subvolume delete /volume1/@docker/btrfs/<subvolume>

3. 清理日志和缓存文件

Btrfs 文件夹可能还包含 Docker 的缓存或日志文件,这些可以安全地清理。

清理 Docker 构建缓存

Docker 的构建过程中可能会生成大量的缓存文件,可以通过以下命令清理:

docker builder prune

清理日志文件

Docker 的日志文件可能存储在 Btrfs 文件夹中,可以查找并清空:

find /volume1/@docker/btrfs -name "*.log" -exec rm -f {} \;

4. 限制未来的存储增长

为了防止 Btrfs 文件夹占用过多空间,可以采取以下措施:

限制容器的日志大小

编辑 Docker 的配置文件 /etc/docker/daemon.json,添加以下内容限制日志大小:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

然后重启 Docker 服务:

sudo synoservice --restart pkgctl-Docker

定期清理未使用的数据

设置计划任务,定期运行

docker system prune

命令,清理未使用的资源。


注意事项

  1. 谨慎操作 Btrfs 子卷:
    手动删除 Btrfs 子卷可能导致 Docker 服务异常,建议优先使用 Docker 提供的命令清理。
  2. 备份重要数据:
    在清理之前,确保已经备份重要的容器数据,避免数据丢失。
  3. 检查依赖关系:
    清理镜像或卷时,确保它们没有被当前运行的容器使用。

通过以上方法,你可以安全清理群晖 NAS 上 Docker 的 Btrfs 文件夹,有效释放存储空间并保持系统稳定运行。

作者 root

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注