当遇到无法停止 Docker 容器的情况时,可以按照以下步骤排查和解决:
首先尝试正常停止容器(等待默认10秒):
docker stop <容器ID或名称>
如果超时未停止,可延长等待时间(例如30秒):
docker stop -t 30 <容器ID或名称>
若正常停止无效,使用强制终止命令:
docker kill <容器ID或名称>
确认容器是否处于特殊状态(如 unkillable
):
docker inspect -f '{{.State.Status}}' <容器ID>
重启 Docker 守护进程(会停止所有容器):
sudo systemctl restart docker
或(旧版系统):
sudo service docker restart
如果容器仍不停止,手动查找并杀死相关进程:
# 查找容器进程
ps aux | grep <容器ID或名称>
# 强制终止进程
sudo kill -9 <进程PID>
若容器已停止但状态未更新,尝试删除容器(注意:会丢失数据):
docker rm -f <容器ID或名称>
aufs
)可能导致异常,建议使用 overlay2
。进入容器查看进程状态(需容器未完全崩溃):
docker exec -it <容器ID> sh
检查是否有进程阻塞(如死锁、无限循环)。
旧版本可能存在 Bug,升级至最新稳定版:
sudo apt-get update && sudo apt-get upgrade docker-ce
若所有方法无效,重启主机可强制释放所有资源。
通过以上步骤应能解决绝大多数容器停止问题。如仍失败,建议提供 docker logs <容器ID>
和 docker inspect <容器ID>
的输出以便进一步分析。