总结:记一次docker调试镜像的问题

news/2024/11/14 13:02:49/

一、背景

同事让帮忙部署一个应用到QKE,给了我镜像地址与配置文件。

由于要将配置文件映射到容器中,我创建了configmap,然后应用中将configmap中key对应的内容映射到了容器中的配置文件中。

但是我遇到了一个问题:

容器频繁快速重启,且看不到日志。

这就很麻烦了,因为没有日志我就看不到错误的原因,所以,当务之急是想办法获取到日志。

之前,我们容器中打印日志,容器重启后,日志就没了,但是至少容器是启动了一会,可以进去看,但是这次这个应用启动太快,立即就挂了,根本没有给时间进入容器。

自己没有想到什么办法,之前一直在想着把容器的日志给映射到pod上,后来同事zy提供了一种用docker调试的办法:用/bin/bash

/bin/bash是提供一个命令行环境,可以执行命令,好处是容器不会挂。

以下是张羽操作截图:最终是通过docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 /bin/bash命令解决。

二、docker进入容器

我之前在想,docker调试镜像,既然镜像启动后就挂,调试的时候不也会挂吗?

现在看来还是自己对docker的命令不熟悉。

先看下docker原来。

我们先执行命令:docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 

发现没有配置文件,如下报错。 

怎么办?

我们再执行下:docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 ls /data

和上面命令不同的是,这个命令后面加了:“ls /data”,看下效果:

可见后面的 ls /data被执行了。这就是重点了,如果镜像后面带了命令,docker就不会再执行镜像里面定义的CMD

如下就是镜像里面定义的CMD,意思是容器起来后第一步就执行CMD,即启动服务,并且指定/data/thor/config.yaml这个配置文件启动。

而这个服务+配置文件有问题,所以就启动失败,容器就挂了。

所以总结下来,容器结束有两种方式:

1、命令执行结束;

  • 上面执行ls /data由于是执行完了,结束容器。

2、CMD执行出问题;

我们想让容器不挂,我们就执行/bin/bash,创建个/bin/bash环境,这个环境的容器是不会挂的,我们可以进入这个环境,然后手动执行CMD,此时,手动执行CMD只是在容器中起了个子进程,父进程是/bin/bash,即使子进程挂了,只要父进程/bin/bash不挂就没事。

我们看下效果:发现已经进来了。

 我们执行下CMD指定的命令:/usr/bin/thor -config.file /data/thor/config.yaml   

 发现配置文件没有,我们创建并用案例中的内容

最终成功发现了日志,看到了报错的原因,其实就是修改下配置文件的listen 


http://www.ppmy.cn/news/293681.html

相关文章

嵌入式USB转RS232九针串口线驱动,及串口软件secureCRT的使用

一、串口驱动 一般而言,嵌入式开发板使用串口来就监控后台。可以使用串口线连接开发板和电脑,对于没有串口的电脑来说就需要一根USB转串口线。(有条件的这里个人推荐绿联的比较稳定,当然其他的也可以,根据自身条件选择…

陪诊小程序怎么做

陪诊小程序是一种基于移动互联网的应用程序,可以帮助用户在医院陪伴家人或朋友就医,提供就医指引、医院导航、排队叫号等服务。下面我们来介绍陪诊小程序的好处和优点。 一、提供便利的就医指引 陪诊小程序可以提供医院的就医指引,包括医院…

2023 年前端 Web 发展趋势

虽然就个人观点,我觉得 Web 开发在最近几年都没什么进展(2016 年至 2021 年),但在刚刚过去的 2022 年中确实又出现了一些新的技术。在本文中,我想跟大家聊聊自己看到的最新 Web 开发的发展趋势。相信这波浪潮会继续激发…

力扣算法系统刷题详细题解记录二(字符串、双指针法、栈与队列)

力扣算法系统刷题题解记录二(字符串、双指针法、栈与队列) 前言 参考顺序和资料:《代码随想录》 二刷要认真做笔记啦,加油! 笔记模板: #### 解题思路#### 示意图#### 代码四、字符串 344.字符串反转 编…

mt7628/7688 PWM驱动

MT7628/MT7688中的pwm,datasheet写的很糟糕,不像三星,还给你来个编程的流程图,配置哪个寄存器都会告诉你,一坨寄存器丢给你.. 它的PWM分为两种模式,OLD和new,这里我们用简单的OLD模式,NEW模式没…

Servlet运行原理及常见API

文章目录 一. Servlet运行原理二. Servlet常用API1. HttpServlet1.1. Servlet的生命周期1.2. Post请求的构造 2. HttpServletRequest2.1. 获取请求信息2.2. 前端给后端传输数据的三种方式2.2.1. 发送Get请求通过query string传输数据2.2.2. 发送Post请求通过form提交数据2.2.3.…

无线网卡芯片rtl8821CU-linux驱动解决方案

最近想在笔记本上kali上使用无线网络,但是vmware的kali虚拟机是无法使用笔记本自带的无线网卡的,于是在淘宝上买了个usb外置无线网卡。但是,网卡买回来了,才发现官网给的linux驱动尼玛竟然无法编译,打电话给官方客服。…

酷派7269_评测:酷派7269的整体性能简介及性价比如何

简单的说一下关于酷派7269的整体性能简介及性价比如何这方面的讯息,不少朋友对于酷派7269的整体性能简介及性价比如何这方面的信息颇感兴趣的。小编今天就为此整理一些相关的讯息,希望对有需要的朋友有所帮助。 酷派7269配备了一块4.5英寸屏幕&#xff0…