来自守护进程的错误响应:无法杀死容器:权限被拒绝,如何在 Ubuntu 20.04 上杀死 docker 容器?

0x5*_*6FF 17 ubuntu kill-process docker

我试图杀死一个 docker 容器,但我的许可被拒绝。我使用Ubuntu 20.04,我的客户端docker版本是20.10.7,服务器版本是20.10.11。

这是我得到的日志:

Error response from daemon: Cannot kill container: fastapi_server: permission denied
Run Code Online (Sandbox Code Playgroud)

我读到我应该使用这个命令来重新启动 docker。

sudo systemctl restart docker.socket docker.service
Run Code Online (Sandbox Code Playgroud)

但问题是,当我执行此命令时,我的所有容器和图像都会消失,但如果我尝试在 localhost:8000 上,我的端口被我想要删除的容器占用。如果我运行sudo netstat -anp | grep 8000,我会得到:

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN    2493/docker-proxy   
tcp6       0      0 :::8000                 :::*                    LISTEN    2500/docker-proxy 
Run Code Online (Sandbox Code Playgroud)

所以这证实了我的端口已经被 docker 容器占用,但是当我运行时docker ps -a,我没有得到任何容器。我也尝试过docker kill,但没有成功。

我应该如何杀死这个容器并释放我的 8000 端口?

dnv*_*trn 14

在这些情况下什么对我有用:

sudo systemctl restart docker.socket docker.service
sudo docker image rm -f $(sudo docker image ls -q)
Run Code Online (Sandbox Code Playgroud)


Omi*_*yan 9

看来我已经使用 snap 以及使用 docker 存储库安装了 docker:

sudo snap list
Run Code Online (Sandbox Code Playgroud)

所以:

sudo snap remove docker --purge
sudo aa-remove-unknown
Run Code Online (Sandbox Code Playgroud)

使用此处描述的方法重新安装 Docker解决了我的问题!无需禁用或删除 apparmor。


bre*_*zky 6

删除前请三思AppArmor。据我了解,这是应用程序安全的核心,例如最近的主要 Ubuntu 版本。

看来权限问题是特定于 Docker 版本的。假设您的 Docker 版本也是通过 snap 安装的,请尝试将您的 Docker 版本至少升级到当前测试版,例如

snap refresh docker --beta
Run Code Online (Sandbox Code Playgroud)

20.10.12似乎工作正常。

(事实上​​,我接受了这个建议,并删除了我的 AppArmor - 快照消失了。然后尽快重新安装,相关快照的设置仍然在我身边 - 后来安装了 docker,出现问题,升级了它:似乎很有魅力.)

  • 我将 docker 引擎版本升级到 20.10.12,一切都很顺利,直到我在杀死容器时遇到相同的拒绝权限。我想知道下一个解决方案是否也很危险,在这个 apparmor 中,没有被删除,只是卸载了未存储在 /etc/apparmor.d 中的所有配置文件。```sudo aa-remove-unknown``` ```docker 容器杀死 $(docker ps -q)```。 (2认同)

Ric*_*lev 1

尝试以下步骤:

docker inspect
Run Code Online (Sandbox Code Playgroud)

找到 PID 并杀死该进程。

如果这不起作用,请检查

dmesg
Run Code Online (Sandbox Code Playgroud)

与 Docker 相关的一切。您可以将输出放在这里,我们可以帮助您。

好吧,从你的角度看来,你的 AppArmor 有问题。尝试这个:

sudo apt purge --auto-remove apparmor
sudo service docker restart
docker system prune --all --volumes
Run Code Online (Sandbox Code Playgroud)

  • 它有效,但我想知道删除 apparmor 安全模块是否最终不会适得其反或损坏某些东西?尽管我最终重新安装了该模块 (2认同)
  • 好问题,我知道并同意 AppArmor 作为 snap 开发人员会引起问题。据我了解,Snap 现在支撑着整个 Ubuntu 软件中心……所以如果人们删除 AppArmor 可能会出现问题;))我不是专家(太多我什至没有的头发在路上被拔掉了) :) ),但尽管我的理解很浅薄,但我还是希望这会有所帮助:https://snapcraft.io/docs/snap-confinement (2认同)