问题
今天在测试docker的时候,发现有容器无法关闭,报错如下:
root@home:/usr/local/vscode# docker stop eb39af7f8acb
Error response from daemon: cannot stop container: eb39af7f8acb: Cannot kill container eb39af7f8acb1b37d3cf30dd3a037c148c1859074993520396bd60f3b5778b1f: unknown error after kill: runc did not terminate sucessfully: container_linux.go:392: signaling init process caused "permission denied"
WTF???
原因
这个提示说我权限不够,虽然我用的是root。我也没办法停止,也没办法删除,之前也遇到类似问题,是跟docker-compose有关的。于是我就去查询了一下类似问题,发现使用docker-compose也没办法停止。
后来继续查询,发现linux中有一个安全模块叫做AppArmor的,会对docker的权限产生影响,所以我们简单地把AppArmor模块停掉或删掉,就可以删除docker container了。
sudo aa-remove-unknown
如果还没有效果,就把AppArmor连服务带配置一起删掉,使用apt purge可以完成此功能。
sudo apt-get purge --auto-remove apparmor
sudo service docker restart
docker system prune --all --volumes