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

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

原文地址:http://blog.51cto.com/wutengfei/2335184

时间: 2024-10-06 13:00:57

Docker中无法停止或删除容器服务问题处理的相关文章

[转] 如何批量删除Docker中已经停止的容器

[From]https://blog.csdn.net/csdn_duomaomao/article/details/78587103 方法一: #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{print $1}' #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'

启动、停止、删除Windows服务

启动: @echo.服务启动...... @echo off @sc create Service_SMS binPath= "D:\公司制度等文件\项目\河北劳动力市场检测系统\WindowsService2\bin\Debug\WindowsService2.exe" @net start Service_SMS@sc config Service_SMS start= AUTO @echo off @echo.启动完毕! @pause 停止: @echo.服务关闭 @echo o

阿里云容器服务与 ASP.NET Core 的 Docker 部署:用 docker secrets 保存 appsettings.Production.json

这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json 传递给运行在容器中的 asp.net core 应用. Docker 针对这样的应用场景已经提供了解决方案 —— Docker Secrets,对应的 docker 命令是 docker secret .我们就用 docker secrets 解决了这个问题,在这篇随笔中分享一下. 首先在阿里云容器

docker概述与安装及运行容器

传统虚拟化 传统虚拟化步骤 1.安装虚拟化软件以及虚拟化的管理软件 2.创建虚拟机 3.给虚拟机安装os 4.在虚拟机内部不是应用(http.db之类的应用) 传统虚拟化的特点 1.VM与VM之间是完全隔离的,并且虚拟机必须要安装os 2.应用所运行的环境是建立在操作系统之上的 3.应用迁移非常笨重 传统虚拟化已经无法满足当前敏捷开发方式,VM的方式会导致开发环境和生产环境不一致,版本测试完成之后需要重新搭建环境. docker docker是容器的引擎工具,最主要是管理容器的生命周期,创建容器

通过运行一个tomcat容器来记录下初学docker常用的几个命令---容器篇

1.查看容器列表 显示正在运行的容器: [[email protected] HMK]# docker ps 显示所有容器,包括未运行的: [[email protected] HMK]# docker ps -a CONTAINER ID:容器的ID IMAGE:启动容器使用的镜像 CREATED:创建时间 STATUS: 状态 PORTS:端口映射信息 NAMES:容器名称 2.使用tomcat镜像启动一个容器,并挂载宿主机中的/HMK/helloword/webapps/HelloWorl

docker中怎样设置开机启动--随容器的启动而启动服务?

docker可以说给我们的部署带来极大的方便和可逢凶化吉性!(懂的同学自然懂) 在初步了解之后,我们就能简单使用docker了. 刚开始玩docker时,可以基于系统级别的镜像做定制,比如基于  centos 镜像使用docker: docker pull centos:7 # 把镜像拉下来 docker run -it centos:7 # 创建一个容器即可运行 你可以在拉下来的容器里安装任何需要的应用(必要的):然后,一切都看起来很美好! 但是,这时,我们最担心一个问题,那就是docker挂

Docker中通过模板创建镜像,Docker容器、仓库及数据管理

1.通过模板创建镜像 (1)首先去下载一个模板 http://openvz.org/Download/templates/precreated //下载速度不快,阿铭下载了一个centos6的模板centos-6-x86-minimal.tar.gz (2)导入该镜像的命令为: cat centos-6-x86-minimal.tar.gz|docker import - centos6 (3)查看导入的镜像 docker images (4)导出镜像: 把现有镜像,导出为一个文件: docke

Docker中的三个基本概念容器(container)、镜像(image)和仓库(registry)

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等). 镜像不包含任何动态数据,其内容在构建之后也不会被改变.Docker 设计时,就充分利用 Union FS的技术,将其设计为 分层存储的架构 .镜像实际是由多层文件系统联合组成.镜像构建时,会一层层构建,前一层是后一层的基础.每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层.比如,删除前一层文件的操作,实际不是真的删

docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)

docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四.docker运行nginx 五.jenkins打包springboot服务且在docker中运行 1.立即构建 输入任务名称:service_blog 选择maven项目(先要在插件管理中安装maven插件) 2.配置 源码管理 选择git(先要在插件管理中安装git插件) 输入git地址.秘钥及