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
  • 容器状态可能显示为 DeadRemoval 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.datlicense_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>
相关推荐
三掌柜6661 小时前
22秒攻击窗口下的防御重构:AI Threat Defense 与 Agent 安全护栏实践
人工智能·安全
马立杰1 小时前
mysql中Illegal mix of collations for operation “UNION”错误的解决方法
数据库·sql·网络安全
xixiaoyunya1 小时前
软件开发中的代码备份策略:Git 之外的本地防线
安全·备份·代码
Ivanqhz1 小时前
BPE(Byte Pair Encoding) 算法
java·服务器·网络·深度学习·神经网络
国际云,接待11 小时前
华为云 EVS 性能诊断:用 CES、ECS QoS 与 fio 定位 IOPS 和吞吐瓶颈
服务器
智恒百亿14 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090
ManageEngineITSM14 小时前
DevOps和ITIL是什么关系?是替代还是互补一文讲清
java·服务器·资产管理·变更管理
码少女16 小时前
Linux--多路转接之select
java·服务器·数据库