docker启动容器提示read init-p: connection reset by peer: unknown问题

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: docker启动容器提示read init-p: connection reset by peer: unknown问题


问题背景:某客户反馈ECS服务器上服务访问不到,导致业务异常,业务是通过单机Docker 部署的,但是目前发现docker 容器没有启动,start拉不起来,异常截图如下



问题排查:


1 从错误里面看是docker-shim去调用runc出现了异常,看起来是runc没有初始化成功,这个地方我想大家会有疑问,runc这个东西是干什么的,他在docker里面起到什么作用?


runc作为容器的运行时,现在作为独立的项目来进行发展,runc提供一套简单的容器运行环境,包括进程的命名空间、cgroups和文件系统权限等管理的功能,runc是基于oci标准的产物,可以让大家都通过统一的接口来进行运行时的操作。其本质的管理工作也是最主要的几个重要的函数clone,unshare和setns等重要的操作函数。



2 第二步就是验证下猜想runc没有拉起来,先把docker debug日志开启下,方法是:修改/etc/docker/daemon.json中增加"debug": true, 然后systemctl reload docker,完毕后执行 docker run -it --rm ubuntu echo OK 发现问题复现,并且看日志以及ps -aux |grep runc 看是为空的,证明runc没拉起来


3 继续过滤message日志,看下debug里面的输出,过滤runc的动作,并且搭配dmesg 打印内核级别的日志看,发现是run panic了




从提示的dumpd core里面看是libsystem.so这个库引发的, 其实我这个时候有点懵逼的,完全陷入知识盲区了,对于完全模式的组件没办法用原始最笨的方法 strace -e trace 去做追踪对比,其实这里之前得到一个非常有效的信息,就是用户机器被入侵了,虽然心理大概率敢肯定lib库被改了,让用户初始化,不过作为技术人员来说不拿出点证据总觉得缺点是什么!



问题总结:


经过多次strace 追踪对比,发现libsystem 库应用的不对,怎么去找ld.so.perload了!这个地方其实有点经验的意思了,之前处理过多次挖矿的问题,这个目录一般都是挖矿入侵创建的,找到异常库后,先注释,然后为了保险,先把ld.so.cache备份改名,ldconfig重新生成


动态库注释后,重启docker 相关容器已经拉起来了,重新捞日志发现panic现象消失,不过被入侵的机器里面很多库还是被改了,推荐考虑做好数据备份,重新初始化环境,然后做下安全加固

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
14 5
|
3天前
|
存储 测试技术 开发者
docker中将数据卷挂载到容器
【10月更文挑战第11天】
14 3
|
3天前
|
存储 应用服务中间件 云计算
深入解析:云计算中的容器化技术——Docker实战指南
【10月更文挑战第14天】深入解析:云计算中的容器化技术——Docker实战指南
15 1
|
2天前
|
存储 Kubernetes 监控
深入探索Docker容器化技术的奥秘
【10月更文挑战第15天】深入探索Docker容器化技术的奥秘
10 0
|
3天前
|
运维 Kubernetes 监控
掌握Docker容器化技术:构建、部署与管理的高效实践
【10月更文挑战第14天】掌握Docker容器化技术:构建、部署与管理的高效实践
12 0
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
Linux 应用服务中间件 nginx
Docker启动时的报错汇总
报错一:error initializing graphdriver Docker启动报错 系统是CentOS 7.2 系统内核及docker版本如下 : [root@docker ~]# uname -r 3.
4275 0
|
7天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
8天前
|
运维 JavaScript 虚拟化
探索容器化技术:Docker的实践与应用
【10月更文挑战第9天】探索容器化技术:Docker的实践与应用
33 3