Docker 容器删除卡在 Removal In Progress / Dead 解决

docker rm -f 报错 driver "overlay2" failed to remove root filesystem: unlinkat ... operation not permitted,1panel 面板里一直显示"移除中"。=

问题现象

  • 执行 docker rm -f <容器ID> 失败,报错类似:

    复制代码
    Error response from daemon: container ...: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/.../diff/.../license_info.json: operation not permitted
  • 容器状态可能显示为 Dead 或 Removal In Progress。

  • Web 管理面板(1panel)里一直转圈"移除中",点停止也没用。

  • ps aux | grep <容器ID> 找不到占用进程。

原因分析

Docker 使用 overlay2 存储驱动时,容器的可写层位于 /var/lib/docker/overlay2/<id>/diff。如果容器内的某些文件被设置了 immutable(不可变)属性 ,Docker 在删除容器时就无法删除这些文件,从而报 operation not permitted。

哪些文件会被设置 immutable?常见于一些安全软件或授权管理程序,比如 AWVS 会把授权文件(如 wa_data.dat、license_info.json)锁定,防止被篡改。容器运行期间加锁,删除时 Docker 没有权限解锁,就卡住了。

解决步骤

1. 递归移除 diff 目录的不可变属性

bash 复制代码
chattr -iR /var/lib/docker/overlay2/b6d79fab4681f181b48690e38b6b8b86870d62e13cf69dda60e9f686dcfc6198/diff

把路径替换成你实际获取到的 UpperDir。-R 表示递归,-i 表示移除 immutable 属性。

2. 再次强制删除容器

bash 复制代码
docker rm -f bdd8f7a60908

这次应该就成功了。刷新 Web 面板,卡住的容器也会消失。

总结

  • 问题根源 :容器内文件被 chattr +i 锁定,Docker 删除时无权限。
  • 核心命令 :chattr -iR <diff目录> + docker rm -f <容器ID>。
相关推荐
云飞云共享云桌面38 分钟前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造
j7~1 小时前
【ProtoBuf】(篇一)初识 ProtoBuf
运维·服务器·序列化·protobuf·protobuf的适用特点
安教安全员通关宝1 小时前
2026年四川安全员A证考试题库+答案+解析
安全
芯盾时代1 小时前
企业权限管理三大难题
安全·权限管理
丰锋ff1 小时前
用户管理命令
linux·运维·服务器
BcoreOS1 小时前
‌新手必看:Debian 13 虚拟机 SSH 连不上?我是怎么一步步调试成功的
服务器
迪菲赫尔曼1 小时前
【基础篇 08】让VS Code连接服务器:界面在本地,文件保存到远端
运维·服务器·vscode·yolo·论文·教程·ultralyt
东方佑2 小时前
去魅:工具调用、Agent 调用、A2A、MCP、Harness 到底都是什么
服务器·网络·数据库
H.莓飛2 小时前
【数据结构】排序总结与规模实测
linux·服务器·开发语言·数据结构·visual studio·1024程序员节
科技小E2 小时前
私有化部署:私有化/本地化AI模型训推工作站DLTM数据不出内网的“安全锁”
网络·安全·自动化