关于一类docker容器闪退问题定位
背景:正在学习docker期间,接到一个任务,通过docker部署一个应用A。该应用A类似于之前部署的应用B,结果很自然地犯了形而上学的错误。
思路:基于dockerfile+docker-compose.yml来部署。
基本操作:编写dockerfile,制作基础镜像;docker-compose.yml作端口映射,数据卷挂载等操作。
出现问题:docker-compose up时,创建容器。docker ps看到容器的状态为restart状态,而不是正常的up。
难点:容器外部docker logs没能查看到容器应用运行的任何日志信息。同时因容器不断处于restart态,无法进入容器内查看应用运行的任何日志信息。
定位:
1、怀疑是docker-compose.yml中设置的内存太少,把内存大小限制设置为4G,没能决定问题。排除内存不够原因。
2、检查docker-compose.yml端口映射,确保没有与现有应用端口冲突。排除端口问题。
3、检查docker-compose.yml中数据卷的挂载及CMD的命令执行参数。排除数据挂载及命令参数问题。
4、怀疑是应用的执行权限问题,可是在不作修改情况下,docker容器中默认用的就是root权限。排除权限问题
5、本地非docker容器内运行该应用,一切正常。排除程序自身问题。
6、容器中前后台进程的影响,A是前台,B后台。(最终元凶)
出现问题原因:dockerfile中的CMD命令,是容器启动后运行的第一条命令,其PID为1。而Docker容器仅在它的1号进程运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。而我们要部署的应用属于后台进程,容器运行时,pid为1的进程不是A,而是bash,这个bash执行完指令后就挂了。同时因为容器中设置的restart策略为unless-stopped,因此会看到容器一直处于restart态。作为验证,将原本在容器中运行正常的B应用,在其CMD的执行参数中加上&,会看到B容器应用也一直处于restart态。
解决:在运行A应用后增加&&tail -f XXX.log,至此容器运行正常,进入A容器内进行相关区块链测试符合预期。
结论:容器生命周期和其内部PID为1的进程一致。
关于一类docker容器闪退问题定位的更多相关文章
- Android使用百度地图出现闪退及定位时显示蓝屏问题
目录 1.Android使用百度地图出现闪退 2.Android使用百度地图定位出现蓝屏问题 1.Android使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.x ...
- docker容器化python服务部署(supervisor-gunicorn-flask)
docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...
- docker 启动mysql 闪退 无法启动问题
docker 安装mysql [获取容器] docker pull mysql:5.6 [启动容器] docker run -p 3306:3306 --name mymysql -v $PWD/co ...
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
iOS8之后,如果应用中用到了地图定位,那么点击设置->隐私->定位服务 再点击该应用有时候会出现闪退问题,其原因是iOS8之后定位中添加了 NSLocationWhenInUseDesc ...
- Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」
Compose 简介 | Docker 从入门到实践 https://vuepress.mirror.docker-practice.com/compose/introduction.html Com ...
- 抓取android系统日志_记录一次定位app闪退故障
在测试android客户端兼容性时,发现app闪退,上海的小伙伴需要闪退时的系统日志:故把快生锈的adb知识拿出来show一把: 1.下载adb工具包(adb的全称为Android Debug Bri ...
- docker容器安装及使用技巧
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...
- Docker容器学习梳理 - 基础知识(2)
之前已经总结了Docker容器学习梳理--基础知识(1),但是不够详细,下面再完整补充下Docker学习的一些基础. Docker是个什么东西 Docker是一个程序运行.测试.交付的开放平台,Doc ...
- 6.Docker容器底层实现了解与安全机制
原文地址: 点击直达 0x00 底层实现 我们以 Docker 基础架构来探究Docke底层的核心技术,简单的包括: Linux 上的命名空间(Namespaces) 控制组(Control grou ...
随机推荐
- 1.7.9- HTML合并单元格实例
- 100多个很有用的JavaScript函数以及基础写法大集合
100多个很有用的JavaScript函数以及基础写法大集合 1.document.write("");为 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:docume ...
- Ribbon、Feign和OpenFeign的区别
Spring Cloud 微服务架构学习记录与示例 Ribbon Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件 Ribbon 可以用来做客户端负载均衡,调用注册中心的服 ...
- Android最新敲诈者病毒分析及解锁(11月版)
一.样本信息 文件名称:久秒名片赞,(无需积分s)(2)(1)(1).apk 文件大小:1497829字节 文件类型:application/jar 病毒类型:Android.CtLocker 样本包 ...
- LA4851餐厅(求好的坐标的个数)
题意: 有一个m*m的格子,左下角(0,0)右上角(m-1,m-1),网格里面有两个y坐标相同的宾馆(A,B),每个宾馆里面有一个餐厅,一共用n个餐厅,第1,2个都在宾馆里,3,4...在 ...
- Dalvik模式下在Android so库文件.init段、.init_array段构造函数上下断点
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78244766 在前面的博客<在Android so文件的.init..ini ...
- POJ2308连连看dfs+bfs+优化
DFS+BFS+MAP+剪枝 题意: 就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路: 首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...
- 绕过网站WAF(图片绕过)
当我们在渗透一个网站的时候,很多时候,会遇到下面这种情况.网站装有WAF,把我们的SQL注入语句给拦截了. 这就是网站的安全狗 此时,我们的渗透会陷入僵局.到底应该如何才能让我们的语句绕过安全狗的检查 ...
- 逆向 stdio.h 函数库 fopen 函数(调试版本)
0x01 fopen 函数 函数原型:FILE *fopen(const char *filename, const char *mode) 返回值为 FILE 类型 函数功能:使用给定的模式 mod ...
- HR:“最喜欢阿里出来的程序员了,技术又好又耐艹!” 我:???
面试造火箭,进厂拧螺丝?真的是这样吗? 缘起 估计不少同学都是被标题吸引进来的.事先声明,这句话不是我虚构的,而是我实实在在从同事的口中听到的,而且还不止一次. 当时的场景就是很正常的交谈,别人也并没 ...