跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 【送书活动三期】解决docker服务假死问题

【送书活动三期】解决docker服务假死问题

时间:2024-04-13 09:10:22 来源:网络cs 作者:利杜鹃 栏目:卖家故事 阅读:

标签: 服务  解决  活动 
阅读本书更多章节>>>>

工作中使用docker-compose部署容器,有时候会出现使用docker-compose stopdocker-compose down命令想停掉容器,但是依然无法停止或者一直卡顿在停止中的阶段,这种问题很让人头疼啊!

目录

问题描述问题排查问题解决终极杀招-最粗暴的解决方法手动清理假死的docker服务 书籍推荐书籍名称:《Kubernetes 从入门到DevOps企业应用实战》内容介绍适合人群如何领书自主购买 最后

问题描述

在使用docker部署服务时,偶尔会遇到docker服务假死的情况,使用的命令如下:

docker ps 显示容器状态正常,但是对外服务已经不可用不可访问docker stats 没有任何反应docker stop CONTAINER_ID 也没有任何反应docker restart CONTAINER_ID 也没有任何反应docker exec -it --user root CONTAINER_ID /bin/bash 也没有任何反应docker logs CONTAINER_ID --tail 111 -f 也没有任何反应docker-compose stop/down 命令也提示响应超时,不可用

问题排查

之前没有遇到过这种问题,也是第一次,于是就各种信息都看一下,各种可能性也都考虑到位

猜测这种情况,可能是由于容器内部的问题导致服务无法正常运行,或者Docker守护进程本身出现了问题。

查看容器内部日志(我的容器日志也没有问题) 使用以下命令查看容器内的stdout和stderr输出,以获取有关容器内部问题的更多信息。
docker logs CONTAINER_ID
使用-f选项可以实时跟踪日志
docker logs -f CONTAINER_ID
检查宿主机资源: 使用以下命令检查宿主机的资源使用情况,确保资源(CPU、内存)没有被耗尽(我的没有问题)
docker stats
查看Docker守护进程状态(我的容器依然处于运行状态) 检查Docker守护进程的运行状态,确保它没有出现问题。
sudo systemctl status docker
如果守护进程出现问题,可以尝试重启Docker服务
sudo systemctl restart docker
手动停止和启动容器: 尝试手动停止和启动容器,看是否能够解决问题。(我的问题么有解决啊😭)
docker stop CONTAINER_IDdocker start CONTAINER_ID
检查端口冲突: 确保容器所使用的端口没有被其他进程占用。(不可能,绝对不可能.jpg)查看系统日志: 查看系统日志以获取更多关于系统或Docker的问题的信息。(说实话么有看出来什么问题)
dmesg | grep -i docker
查看网络配置(正常的网络状况,网络配置也没有修改) 检查Docker网络配置,确保网络正常。
docker network ls
查看容器的网络配置
docker inspect CONTAINER_ID | grep NetworkMode

查看防火墙设置: 如果使用防火墙,确保容器所需的端口没有被阻塞。

尝试重启Docker服务: 如果以上方法都没有解决问题,可以尝试重启整个Docker服务。(终极大招,管用!)

sudo systemctl restart docker

问题解决

终极杀招-最粗暴的解决方法

重启docker(慎用):
sudo systemctl restart docker

要注意,这个操作会把所有的docker服务无差别的重启,慎用

手动清理假死的docker服务

找到假死的docker服务:执行docker ps命令找到容器ID【CONTAINER_ID】先尝试使用docker自带的命令停止容器docker stop 【CONTAINER_ID】 发现停不掉手动查找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/挂载目录/secretsumount /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 目录名

这个时候就可以删掉了

再次尝试通过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

再次检查docker服务状态 docker ps

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

如果说按照这个操作依然无法解决docker假死问题,那么我还是建议大家采用上面最粗暴的方式去解决,但是要注意,这个操作会把所有的docker服务无差别的重启。


书籍推荐

源自近200万学员热捧的Kubernetes实战课程作者研究和实践容器技术超过10年历时三年精心打造,涵盖大量一线大厂实战项目理论基础+命令详解+众多应用场景+企业级案例+自动化DevOps运维知识体系

书籍名称:《Kubernetes 从入门到DevOps企业应用实战》

在这里插入图片描述

内容介绍

本书作者从事容器技术方面的研究和实践已近十年,还是一位Kubernetes讲师和社区贡献者,其录制的Kubernetes视频课入选了工信部人才交流中心官方认证课程,本书是在总结多年来不断改进的视频课的基础上精心编撰而成,内容经过学员检验,值得依赖。

本书除介绍Kubernetes本身,还介绍了很多周边相关技术,比如,Jekins、CI\CD、Istio、Prommethues、Ingress、K3s等,有助于读者整合运用这些技术,真正解决生产实践中遇到的问题。
总之,这是一本理解兼备实践,注重实操的Kubernetes好书,期待读者从本书中收获多多。

适合人群

本书由浅入深,有趣有料,适合想提升代码编写水平的大学生、求职者、编程爱好者阅读,也适合有1~2年开发经验的程序员参考,还可以作为各类培训班的培训教材。

如何领书

————————————————
本次本篇文章送书 🔥2-3本 评论区抽2-3位小伙伴送书
📆 活动时间:截止到 2023-12-09 20:00:00
🎁抽奖方式:利用网络公开的在线抽奖工具进行抽奖
💡参与方式:关注、点赞、收藏,评论 “人生苦短,K8S超简单”
根据文章阅读量的多少来安排送书的本数。
————————————————

🔥 注:活动结束后,会私信中奖粉丝的,各位注意查看私信哦!

自主购买

小伙伴也可以访问链接进行自主购买哦~
直达京东购买链接🔗:《Kubernetes 从入门到DevOps企业应用实战》


最后

好看的灵魂千篇一律,有趣的鲲志一百六七!如果觉得文章还不错的话,可以点赞+收藏+关注 支持一下,鲲志的主页 还有很多有趣的文章,欢迎小伙伴们前去点评如果有什么需要改进的地方还请大佬指出❌

在这里插入图片描述

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-13/157916.html,文章来源:网络cs,作者:利杜鹃,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论