Docker 无法停止或删除容器服务问题的解决方案

前言

今天有开发同学给我反馈说有一个容器服务无法 stop、rm(docker rm -f)和 kill 等操作,也就是说这个容器服务无法终止~

操作步骤

(1)执行删除命令无法删除docker的目录:

# ll /var/lib/docker/containers | grep caf8ef20f3c1
# cd /var/lib/docker/containers
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8

这个时候我们会收到这样的报错:

rm: 无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets": 设备或资源忙

无法删除"/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm": 设备或资源忙

(2)从上面报错我们可以看到“secrets”和“shm”共享挂载导致无法删除,首先找到挂载的位置,然后取消挂载后,再删除:

# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1"

(3)取消挂载:

# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets
# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm

(4)再次查看:

# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1" //已经没有啦

(5)现在执行删除docker的目录:

# cd /var/lib/docker/containers
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8

(6)删除容器服务

现在我们使用 rm 或 kill 来删除 容器服务:

# docker rm -f caf8ef20f3c1c

# docker kill --signal=SIGINT caf8ef20f3c1

如果上面命令运行之后,出现hang住(卡住)现象,请重启docker服务:

# systemctl restart docker

做完以上步骤,所遇问题基本就可以解决了~

补充:Docker容器无法被stop or kill问题

问题过程

某环境一个mysql容器无法被stop or kill or rm

sudo docker ps | grep mysql 查看该容器

7844250860f8 mysql:5.7.22  "/.r/r docker-entr..."  41 minutes ago  Up 8 minutes  r-dlrel-mysql-1-66df8f33

使用docker stop / docker kill / docker rm -f 等命令处理后,容器立马自动重启

立即查看容器,运行时间为:Up Less than a second,说明容器立马启动了

7844250860f8 mysql:5.7.22  "/.r/r docker-entr..."  42 minutes ago Up Less than a second  r-dlrel-mysql-1-66df8f33

kill该容器对应的物理进程,依然自动重启

获取物理进程方式:1.docker inspect中的 State.Pid字段为物理进程ID; 2.ps 命令

查看容器restart policy,策略为no,即不会自动重启

如果需要更新运行中容器的restart策略,可以使用该命令:docker update –restart=no my-container

"RestartPolicy": {
  "Name": "no",
  "MaximumRetryCount": 0
},

程序员之间神奇的问题解决方式

你是否出现过这种场景:

百思不得其解的问题,当走到同事面前,刚把问题说清楚,自己就恍然大悟了。

问题明明很简单,但程序运行就是出问题,然后找个同事帮忙检查下基础配置,自己又顿悟了。

这次我属于第一种,刚把问题说完,立马想起:擦,是容器编排工具Rancher在做调度,容器挂了之后会自动重启。

登录rancher一看,果然如此,”乌龙”问题。虽这次不是问题,但Docker确实有无法stop的问题,资料也很多。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Docker学习笔记之容器查看启动终止删除的方法

    本文介绍了Docker学习笔记之容器查看启动终止删除的方法,分享给大家,具体如下: 查看 docker ps 主要有些参数要说一下 1. 不加参数,表示查看当前正在运行的容器 2. -a,查看所有容器包括停止状态的容器 3. -l,查看最新创建的容器 4. -n=x,查看最后创建的x个容器 列一下docker ps的结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 这些分别代表什么 CONTAINER ID:容器ID,唯一标识容器

  • Docker 技巧之删除Docker容器和镜像

    公司业务在生产环境100多台服务器上用了docker,已经有大半年了,可是最近发现,每个服务器上的各种镜像好多好乱,就想批量删除镜像,需要的来看一下把. 删除所有未运行 Docker 容器 docker rm $(docker ps -a -q) 删除所有 Docker 镜像 删除所有未打 tag 的镜像 docker rmi $(docker images -q | awk '/^<none>/ { print $3 }') 删除所有镜像 docker rmi $(docker images

  • 删除docker里建立容器的操作方法

    怎么删除docker里建立的容器 1.首先使用docker -s -a命令列出所有容器 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2582758af13 ubuntu "/bin/bash" 2 hours ago Up 2 hours first_ubuntu 6b5b5a969241 centos "/bin/bash" 2 days ago Exited (0)

  • Linux上创建、列出、删除Docker容器方法总结

    1.启动Docker容器 使用下面的命令启动新的Docker容器.这将启动一个新的容器,并为你提供使用/bin/bash shell访问该容器的权限. # docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...] 例如,下面的命令将使用名为"ubuntu"的图像创建新的docker容器.要列出所有可用图像,请使用docker images命令. # docker run -i -t ubuntu /bin/bash 要退出Do

  • Docker stop停止/remove删除所有容器

    本文主要介绍了Docker stop停止/remove删除所有容器,分享给大家,具体如下: $ docker ps // 查看所有正在运行容器 $ docker stop containerId // containerId 是容器的ID $ docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID $ docker stop $(docker ps -a -q) // stop停止所有容器 $ docker rm $(docker ps -a -

  • Docker容器无法停止删除的解决方案

    查找运行的容器id docker ps 查找上面容器的物理位置 cd /var/lib/docker/container ls -a #此处会显示所有容器的id,找出上面那个无法停止删除的id(8位) 先停止docker服务 service docker stop 删除物理容器 rm -rf /var/lib/docker/container/{上面找到的id} 重启docker服务 service docker start 补充:Docker 退出容器不停止容器运行 并重新进入正在运行的容器

  • Docker 无法停止或删除容器服务问题的解决方案

    前言 今天有开发同学给我反馈说有一个容器服务无法 stop.rm(docker rm -f)和 kill 等操作,也就是说这个容器服务无法终止- 操作步骤 (1)执行删除命令无法删除docker的目录: # ll /var/lib/docker/containers | grep caf8ef20f3c1 # cd /var/lib/docker/containers # rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef28

  • Docker如何安全地停止和删除容器

    目录 前言 1. 停止和删除容器 停止容器 删除容器 删除容器方法一 删除容器方法二 删除容器方法三 删除容器方法四 2. 容器资源限制 限制容器内存资源 限制容器CPU资源 限制容器 Block IO 3. 总结 前言 上一篇文章讲了容器的运行启动:[Docker 那些事儿]如何安全地进入到容器内部 本篇文章将继续承接上一篇,讲讲如何 停止.删除容器 和 对容器进行资源限制 1. 停止和删除容器 停止容器 在工作中,有时会需要将容器暂停,例如,要为容器文件系统做一个快照时.使用 docker

  • Docker Compose快速部署多容器服务实战的实例详解

    目录 1 什么是Docker Compose 2 安装Docker Compose 3 Docker Compose文件格式的简单介绍 4 Docker Compose常用命令 5 使用Docker Compose一键部署Spring Boot+Redis实战 5.1 构建应用 5.1.1 Spring Boot项目 5.1.2 Redis配置文件 5.2 打包应用并构建目录 5.2.1 打包Spring Boot项目 5.2.2 上传redis.conf配置文件 5.3 编写Dockerfil

  • Docker consul的容器服务更新与发现的问题小结

    目录 一.Docker consul的容器服务更新与发现 1.什么是服务注册与发现 2.什么是consul? 3.consul提供的一些关键特性 二.Consul部署 第一步:consul服务器上操作如下 1.建立 consul 服务 2.设置代理,后台启动 consul 服务器 第二步:registrator部署 192.168.80.20 上操作如下: 4.容器服务自动加入Nginx集群 5.安装Nginx.httpd测试镜像 6.在consul服务器中查看镜像是否注册 7.在web浏览器中

  • IDEA远程管理docker镜像及容器服务的实现

    目录 一.开启docker远程访问服务 二.IDEA安装Dokcer插件 使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有必要了.提供图形界面的方式来操作docker也的确是比使用命令行的方式更直接.更简单.所以很多的厂商基于docker RESTful API向用户提供了用于docker容器镜像管理的用户图形界面,Portainer.Docke

  • docker多容器操作与强制删除容器的方法步骤

    目录 简介: 1.创建多个容器 2.停止多个容器 3.删除多个容器 4.强制删除容器 总结 简介: 这是一篇有关[doker的多容器操作和强制删除容器的方法]的文章,用最精简的语言去表达给前端读者们. 1.创建多个容器 在WIndows环境下我们来作这个,先打开三个PowerShell窗口,然后在每个窗口中输入创建容器的命令,这里以Nginx镜像为例 docker container run nginx 然后再重新打开一个PowerShell窗口,输入查看命令,查看已经开启的容器. docker

  • Windows下MySQL服务无法停止和删除的解决办法

    我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL.这是安装的具体方法:点击这里.在执行如下命令: mysqld --install MySQL --defaults-file=[ini配置文件绝对路径] 在执行上面那个命令的时候,输入了错误的配置文件路径.虽然系统可能会返回 success .并且命令 mysqld --initialize 也可以执行并生成数据文件.但是当我执行 net start mysql 的时候,系统会一直提示服务正在启动.原因是我的配置文件路径错误

  • Docker 配置阿里云容器服务操作

    配置阿里云Docker容器服务 登录 阿里云镜像服务控制台 首先要有一个自己的阿里云账号 1.点击名称空间,建议用自己名字/公司名字 比如叫 aliyun-stg 创建完成名字空间 2.点击镜像仓库,创建镜像,填写细信息 仓库可以使用Redis mysql 等名字进行管理 创建仓库 3.观察创建好后的信息 registry.cn-beijing.aliyuncs.com/aliyun-stg/flask 阿里docker域名 registry.cn-beijing.aliyuncs.com 我自

  • Docker容器服务编排利器详解

    目录 一.使用Docker Compose必要性及定义 二.Docker Compose应用参考资料 三.Docker Compose应用最佳实践步骤 3.1 概念 3.2 步骤 四.Docker Compose安装 五.Docker Compose应用案例 5.1 网站文件准备 5.2 Dockerfile文件准备 5.3 Compose文件准备 5.4 使用docker-compose up启动容器 5.5 访问 一.使用Docker Compose必要性及定义 用容器运行一个服务,需要使用

随机推荐