虚拟机ubuntu中磁盘满了 + 镜像损坏,如何解决

目标:磁盘空间释放、坏镜像删掉、容器正常启动

报错:

复制代码
$ podman rmi -f 82cfc386c1bcbc6c12de84a888ab36a6716b5ce8c4338b01561a52a22d1e0d49
Error: 2 errors occurred:
	* write /home/taskmanager/.local/share/containers/storage/overlay-containers/.tmp-containers.json2603214207: no space left on device
	* write /home/taskmanager/.local/share/containers/storage/overlay-layers/.tmp-layers.json736780310: no space left on device

核心问题:磁盘彻底写满了,连执行删除命令的临时空间都没有,所以删镜像也报错,优先级:先

清空间 → 再删垃圾 → 最后操作容器镜像

先清空间

复制代码
​
# 1. 紧急清理系统最大的垃圾:日志文件,瞬间释放几G空间
sudo journalctl --vacuum-size=100M

# 2. 清理用户目录缓存+临时文件,释放/home空间(你的报错目录)
rm -rf ~/.cache/* && rm -rf /tmp/*

# 3. 强制清空Podman/Docker所有缓存+垃圾,不询问直接删
podman system prune -a -f --volumes

​

删那个损坏镜像

复制代码
podman rmi -f 82cfc386c1bcbc6c12de84a888ab36a6716b5ce8c4338b01561a52a22d1e0d49

重启项目容器

复制代码
podman rm -f task-manager
podman run -d --name task-manager -p 6006:6006 localhost/task-manager-backup:latest gunicorn -w4 -b0.0.0.0:6006 app:app

验证是否全部恢复正常

复制代码
podman images
podman ps

Podman 与 Docker 的无缝切换

当前是Podman模拟Docker,两者99% 的命令完全一致,不需要做任何修改,日常使用:

  1. 所有docker xxx命令,比如docker ps/run/rm/pull/save/load 都可以正常敲,执行的是 Podman;
  2. Podman 比 Docker 更轻量、无守护进程,对 python 项目 / 后端服务更友好,无需替换为原生 Docker
  3. 唯一区别:Podman 的容器存储路径和 Docker 不同,但使用无感知,不用管。

可选:安装原生 Docker(如果想彻底替换 Podman)

如果强迫症想装原生 Docker,执行下面的命令一键安装(Ubuntu/Debian 通用),安装后 Podman 的软链接会被覆盖,docker xxx就是原生 Docker 了:

复制代码
sudo apt-get update && sudo apt-get install docker.io docker-compose -y
sudo systemctl start docker && sudo systemctl enable docker
sudo usermod -aG docker $USER

执行完后注销重新登录,即可免 sudo 执行 docker 命令。

相关推荐
哈基咪怎么可能是AI5 小时前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行1 天前
Linux和window共享文件夹
linux
木心月转码ing1 天前
WSL+Cpp开发环境配置
linux
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux