Docker无法stop或者rm指定容器

2024-06-03 22:28
文章标签 指定 docker 无法 容器 rm stop

本文主要是介绍Docker无法stop或者rm指定容器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker无法stop或者rm指定容器

今日准备重启一下docker 容器部署的 Nginx 时,使用的命令是
docker exec -it ir-nginx nginx -s reload
结果发现无法重启报错
然后想着关闭再启动,结果发现
docker restart 、docker stop 、docker kill 、docker exec
都不行
于是用systemctl stop docker再 systemctl start docker
虽然命令可以执行成功,但是Nginx那个容器还是不能关闭、重启

执行 docker restart
报错记录的为

OCI runtime exec failed: exec failed: json: cannot unmarshal number into Go struct field CompatState.init_process_start of type string: unknown

于是想着再复制一个yml脚本(弄一个新的docker),改了一下里面的信息
在这里插入图片描述

再执行 docker-compose -f /data/compose/nginx-arm64-v2.yml up -d

报错记录的为

Error response from daemon: Cannot restart container f8ccd87c9714: Cannot kill container f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c: unknown error after kill: runc did not terminate sucessfully: json: cannot unmarshal number into Go struct field CompatState.init_process_start of type string

里面有个 f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c 的id
(后续:往后就直接执行原来的yml,关键是要把这个特别长的id拿到)

于是想查找与容器ID相关的文件或套接字,把它kill掉

lsof | grep "f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c"

结果查出一大堆数据,不可能一个一个kill吧

于是使用 docker inspect 和 awk 来获取并杀死容器主进程PID

# 获取容器主进程的PID  
PID=$(docker inspect -f '{{.State.Pid}}' f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c)  # 杀死该PID(请谨慎使用)  
kill $PID

该操作可以直接在控制台执行

在同一个 shell 会话中连续执行这两个命令时,第二个命令能够“知道”它的 PID 来自于上一条命令的记录,因为第一个命令的输出被临时存储(关闭终端窗口或退出 shell 会话时,变量就会消失)在了 PID 变量中,并且这个变量在后续的命令中是可以被引用的。

然后发现通过
docker ps (查看"正在运行"的容器) ,看不到那个容器了
通过 docker ps -a 可以看到,表示已经被关闭了
于是再把这个容器给删除了
docker rm -f ir-nginx

最后再执行(这个yml‘脚本是我自己的,你们用你们自己的)

docker-compose -f /data/compose/nginx-arm64.yml up -d

验证了一下重启命令,发现没问题了。

这篇关于Docker无法stop或者rm指定容器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028280

相关文章

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh