由于AppArmor,Docker杀死了容器“权限被拒绝”。只是为什么

时间:2020-03-19 12:55:51

标签: docker docker-compose apparmor

我正在尝试杀死通过docker-compose启动的容器。通过正常停止(Ctrl + C)或docker-compose down,我遇到以下错误:

ERROR: for <container-name>  cannot stop container: b60c1c4d886899504b...2a022e4d39429dc6ca6e4784afdd: Cannot kill container b60c1c4d886899504b...2a022e4d39429dc6ca6e4784afdd: unknown error after kill: runc did not terminate sucessfully: container_linux.go:388: signaling init process caused "permission denied"
: unknown

我只是在寻找答案为什么。我试图更好地了解AppArmor,但了解为什么,我无法在一切都有助于了解正在发生的事情之前停止容器。

我看到这是很多人遇到的错误。 1 2 3 4 但是,大多数答案都建议解决方法,而没有解决方案。甚至诸如1之类的解释性答案也直接进入了AppArmor和个人资料。从docker文档中,我看到docker具有默认的AppArmor策略docker-default。我部分理解了这个概念,但是仍然不明白为什么为什么。我无法通过用户和我在其中启动容器的环境来阻止容器。

如果我想回答我的问题:

  • 我以用户身份启动了一些容器,为什么我无法停止它们。 sudo也不起作用。谁能阻止他们?
  • 每个容器都需要一个AppArmor配置文件吗?
  • 我认为重新启动或禁用AppArmor不是一个好主意。我应该那样做吗?理想的解决方案是什么?

欢迎任何反馈或解释。谢谢。

1 个答案:

答案 0 :(得分:0)

我找不到确切的原因,但是差一点了。看来我的Ubuntu 19.10上的docker安装冲突,这导致了此访问控制问题。

here所述,我已经删除了快照安装。因为我已经进行了另一次安装,所以不必通过其他方式进行安装。

sudo snap remove docker