在群晖的 /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 子卷没有被清理,可以手动检查和删除。
- 查看所有 Btrfs 子卷:
btrfs subvolume list /volume1/@docker/btrfs
- 确认无用的子卷(例如,已被删除的容器或镜像对应的子卷)。
- 删除孤立的子卷:
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
命令,清理未使用的资源。
注意事项
- 谨慎操作 Btrfs 子卷:
手动删除 Btrfs 子卷可能导致 Docker 服务异常,建议优先使用 Docker 提供的命令清理。 - 备份重要数据:
在清理之前,确保已经备份重要的容器数据,避免数据丢失。 - 检查依赖关系:
清理镜像或卷时,确保它们没有被当前运行的容器使用。
通过以上方法,你可以安全清理群晖 NAS 上 Docker 的 Btrfs 文件夹,有效释放存储空间并保持系统稳定运行。