docker 清理未使用的镜像层

当你运行 `docker rmi` 删除 Docker 镜像时,它只是从 Docker 的镜像存储中移除了记录,并未真实删除文件

当你运行 docker rmi 删除 Docker 镜像时,它只是从 Docker 的镜像存储中移除了记录,但镜像的物理文件可能仍然残留在硬盘上,特别是在清理不完全或未清理过期层的情况下。以下是彻底清除硬盘上残留数据的步骤:


1. 清理未使用的镜像层

运行以下命令清理未被使用的镜像层和数据:

docker system prune -a --volumes

解释:

  • -a:移除所有未被容器使用的镜像。
  • --volumes:同时清理未使用的卷。
  • Docker 会提示你确认,可以按 y 确认操作。

2. 检查镜像存储路径

Docker 的默认存储位置依赖于存储驱动和操作系统:
- Linux(默认路径)/var/lib/docker
- macOS/Windows(Docker Desktop)~/Library/Containers/com.docker.docker/Data/vms/0/

你可以查看镜像的具体存储路径:

docker info | grep "Docker Root Dir"

进入该路径检查是否仍有与 docify-rails:v1 相关的残留文件。


3. 手动删除特定镜像文件

如果你知道镜像的 ID(删除前可以通过 docker images 查看),可以直接删除相关层:
1. 找到镜像的层目录:

sudo find /var/lib/docker -name "<image_id>"

或者列出相关子目录:

sudo du -sh /var/lib/docker/*
  1. 删除与该镜像相关的层:
sudo rm -rf /var/lib/docker/overlay2/<layer_id>

⚠️ 注意:这种操作需要极其小心,误删可能会破坏 Docker 的其他运行数据。


4. 重启 Docker 服务

清理完成后,建议重启 Docker 服务以确保系统正常运行:

sudo systemctl restart docker

或在 macOS/Windows 上重启 Docker Desktop。


5. 检查清理效果

确认清理完成后,检查是否有无用文件残留:

docker system df

如果所有未使用的资源均为 0,则清理成功。


自动清理建议

为了避免长期积累,可以设置自动清理策略,例如定期运行:

docker system prune -f --volumes