我可以正常启动 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
也许其中一个起了作用?也许没有?