当使用 docker load -i
命令导入镜像时遇到空间不足的问题,可以尝试以下几种解决方案:
# 删除所有未被使用的容器、网络、镜像和构建缓存
docker system prune -a --volumes
# 或者单独清理不需要的镜像
docker image prune -a
如果系统盘空间不足,可以将 Docker 数据目录迁移到有更大空间的磁盘:
# 停止 Docker 服务
sudo systemctl stop docker
# 移动现有数据(假设移动到 /mnt/docker)
sudo mv /var/lib/docker /mnt/docker
# 创建符号链接
sudo ln -s /mnt/docker /var/lib/docker
# 重启 Docker 服务
sudo systemctl start docker
对于使用 devicemapper 存储驱动的情况:
# 查看当前存储池信息
docker info | grep 'Pool Name'
# 停止 Docker 服务后扩展存储池
# 具体命令取决于你的存储配置
如果只需要临时导入一个镜像:
# 先解压镜像文件到临时目录
mkdir temp_dir
tar -xvf your_image.tar -C temp_dir
# 然后使用 docker import 导入(注意与 load 的区别)
cat temp_dir/* | docker import - your_image:tag
# 查看磁盘使用情况
df -h
# 查看 Docker 数据目录大小
du -sh /var/lib/docker/
考虑使用 overlay2 存储驱动(现代 Docker 版本的默认驱动),它通常比 devicemapper 更节省空间。
选择哪种方案取决于你的具体环境和需求。通常从清理无用资源开始是最安全的做法。