You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker daemon连接containerd超时无法停止容器,求正确停止方法

正确停止Docker Daemon的方法

看起来你碰到了Docker daemon和containerd之间的通信超时问题,这时候直接用docker kill或者docker stop操作容器肯定行不通——因为命令根本没法和daemon正常建立通信。别慌,咱们直接从daemon本身入手,下面是不同操作系统环境下正确停止Docker daemon的方法:

Linux 系统(Systemd 发行版,比如 Ubuntu、CentOS、Debian 等)

这是目前大部分主流Linux发行版的情况,用systemctl直接管理服务:

  • 常规停止方法
    输入以下命令,这会优雅地停止Docker daemon以及关联的containerd进程:
    sudo systemctl stop docker
    
  • 如果常规停止失效,强制杀死进程
    如果systemctl命令没反应,就直接找到Docker和containerd的进程并强制终止:
    1. 先列出相关进程:
      ps aux | grep -E 'docker|containerd'
      
    2. 然后逐个杀死进程(把<进程ID>替换成你查到的实际ID):
      sudo kill -9 <进程ID>
      
      或者批量杀死所有相关进程:
      sudo pkill -9 docker containerd
      

Linux 系统(非Systemd 发行版,比如 Alpine、OpenRC 等)

这类系统用对应的服务管理工具,比如OpenRC环境下:

sudo rc-service docker stop

macOS

直接通过Docker Desktop图形界面操作最省心:
点击顶部菜单栏的Docker图标,选择Quit Docker Desktop,这会完全停止Docker daemon和所有相关服务。

Windows

同样通过Docker Desktop操作:
要么点击应用右上角的设置图标选择Quit Docker Desktop,要么在任务栏右键点击Docker图标,选择Exit即可。

小提示

等Docker daemon重启后,你可以用docker ps -a查看容器状态,之后就能正常清理或重启容器了。如果这类通信超时问题频繁出现,建议检查Docker和containerd的版本是否兼容,或者通过journalctl -u docker查看系统日志排查根本原因。

内容的提问来源于stack exchange,提问作者shriyash Lakhe

火山引擎 最新活动