• docker服务假死解决方案


    简介

    • 在使用docker部署我们的服务时,偶尔会遇到这种情况,使用如下命令:
      1. docker ps 显示容器状态正常,但是对外服务已经不可用
      2. docker stats 没有任何反应
      3. docker stop CONTAINER_ID 没有任何反应
      4. docker restart CONTAINER_ID 也没有任何反应
      5. docker exec -it –user root CONTAINER_ID /bin/bash 也没有任何反应
      6. docker logs CONTAINER_ID --tail 111 -f 也没有任何反应
      7. docker-compose命令也提示响应超时,不可用

    本文内容有

    • 手动清理假死的docker服务

    原文传送门


    1、手动清理假死的docker服务

    1.1 找到假死的docker服务

    执行docker ps命令找到容器ID【CONTAINER_ID】

    1.2 先尝试使用docker自带的命令停止容器

    docker stop 【CONTAINER_ID】 发现停不掉

    1.3 手动查找docker目录下的容器信息,并删掉

    docker默认目录:/var/lib/docker

    所有docker容器的信息都挂载在/var/lib/docker/containers目录下

    通过【CONTAINER_ID】找到该假死服务的目录

    ll /var/lib/docker/containers | grep 【CONTAINER_ID】

    cd /var/lib/docker/containers

    rm -rf 目录名

    这里删除可能会报下面的错误,因为你的容器还挂载了其他目录,信息如下:

    rm: 无法删除"/var/lib/docker/containers/目录名/secrets": 设备或资源忙
    无法删除"/var/lib/docker/containers/目录名/shm": 设备或资源忙

    这个时候查一下容器对应的挂载目录

    cat /proc/mounts |grep "docker" |grep "【CONTAINER_ID】"

    然后先取消挂载

    umount /data/sys/var/docker/containers/挂载目录/secrets
    umount /data/sys/var/docker/containers/挂载目录/shm

    如果这一步 unmout 不了,可以尝试找到使用该目录的进程

    lsof |grep "挂载目录"

    如果有相关进程,记录相关的进程号直接 kill -9 进程号

    这个时候再重新执行删除目录命令

    ll /var/lib/docker/containers | grep 【CONTAINER_ID】

    cd /var/lib/docker/containers

    rm -rf 目录名

    这个时候就可以删掉了

    1.4 再次尝试通过docker的命令停止容器

    docker stop 【CONTAINER_ID】

    docker rm -f 【CONTAINER_ID】

    docker kill --signal=SIGINT 【CONTAINER_ID】

    如果还是无法停掉改服务,可以按如下步骤:

    使用linux进程管理命令来结束容器进程

    先找到该进程:

    ps -ef | grep【CONTAINER_ID】

    强制杀掉筛选出来的进程信息:

    kill -9 PID

    1.5 再次检查docker服务状态

    docker ps

    可以看到该服务已经被干掉了。

    1.6 最粗暴的解决方案如下

    直接停止docker.service,重启后自然就好了,如果服务太多,我不建议这样使用,太慢了,而且影响其他服务。

    sudo service restart docker

  • 相关阅读:
    Thinger.io 支持多协议、插件化开源 IoT 物联网平台
    npm 常用的命令
    如何制作一个英语单词二维码?
    Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
    有趣的算法(七) ——快速排序改进算法
    【深入浅出 Yarn 架构与实现】6-1 NodeManager 功能概述
    Profinet转Modbus网关模块实现PLC和从站Modbus通讯,无需编写程序
    【电商运营】在节日期间,这几个营销误区一定要避免!
    RCE极限挑战
    学习MySQL 临时表
  • 原文地址:https://blog.csdn.net/iijik55/article/details/126327590