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)
        看来我已经使用 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。
删除前请三思AppArmor。据我了解,这是应用程序安全的核心,例如最近的主要 Ubuntu 版本。
看来权限问题是特定于 Docker 版本的。假设您的 Docker 版本也是通过 snap 安装的,请尝试将您的 Docker 版本至少升级到当前测试版,例如
snap refresh docker --beta
Run Code Online (Sandbox Code Playgroud)
20.10.12似乎工作正常。
(事实上,我接受了这个建议,并删除了我的 AppArmor - 快照消失了。然后尽快重新安装,相关快照的设置仍然在我身边 - 后来安装了 docker,出现问题,升级了它:似乎很有魅力.)
尝试以下步骤:
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           37141 次  |  
        
|   最近记录:  |