从 snap Docker 切换到 .deb,无法停止我的容器

从 snap Docker 切换到 .deb,无法停止我的容器

我可以正常启动 Docker 容器,但是当我尝试停止或终止它们时,出现错误:

$ docker kill upbeat_shannon 
Error response from daemon: Cannot kill container: upbeat_shannon: Cannot kill container 3b9abdd8cf45d4e8bacd2980a2b6a0be2bc6915642818d46f6acf8347545fcd2: unknown error after kill: docker-runc did not terminate sucessfully: container_linux.go:387: signaling init process caused "permission denied"
: unknown

我的情况非常相似https://stackoverflow.com/questions/50482315/docker-compose-down-fails-due-to-permission-denied因为在切换到 .deb 包之前,我之前已经安装了 Docker 的 snap 版本docker.io。看来我的问题是由 apparmor 引起的:

$ sudo apparmor_status
apparmor module is loaded.
58 profiles are loaded.
51 profiles are in enforce mode.
   [ ... lines omitted ... ]
   snap.docker.compose
   snap.docker.docker
   snap.docker.dockerd
   snap.docker.help
   snap.docker.hook.install
   snap.docker.hook.post-refresh
   snap.docker.machine

因此,看起来 Docker snap 在我的计算机上留下了一些配置文件,并且它们仍在执行中。但我已经卸载了 snap,我不知道如何清理它们。

答案1

我重新启动了计算机,问题似乎已经解决了。

我之前重启过电脑,所以不知道为什么这次重启能解决问题。重启之前我做了以下事情:

  • sudo systemctl restart apparmor.service
  • sudo apparmor_parser --purge-cache
  • 重新安装并重新删除 Docker snap
  • 重新安装 apparmor

也许其中一个起了作用?也许没有?

相关内容