docker容器启动失败如何查看日志

目录
  • docker容器启动失败查看日志
    • 这个时候如何排查问题呢?
    • 发现有更简单的命令
  • 日志查看 docker容器启动失败原因
    • 1.查看异常容器id
    • 2.查看日志所在路径
    • 3.打开错误日志,查看详情
  • 总结

docker容器启动失败查看日志

在使用docker的时候,在某些未知的情况下可能启动了容器,但是过了没几秒容器自动退出了。

这个时候如何排查问题呢?

通常碰到这种情况无非就是环境有问题或者应用有问题,应用问题再本地可以进行调试解决,但是环境问题就比较头疼了。

这个时候我们就需要查看容器的日志来进行排查。

这里我们的容器id=60f486ec7c33

我们可以通过如下命令来获取容器的日志地址吧

docker inspect --format '{{.LogPath}}' 60f486ec7c33

然后通过cat命令查看上述命令找到的日志地址

cat /var/lib/docker/containers/97069f94437b86b50341f8253d85f426884315c3d027f7b7fa975751c7d8e18e/97069f94437b86b50341f8253d85f426884315c3d027f7b7fa975751c7d8e18e-json.log

命令解释:

docker inspect 用于获取容器/镜像的元数据。其中就包含容器日志的地址,上述命令只是增加了一个–format参数用于将日志地址过滤出来。

docker inspect 中有很多信息,具体的大家可以自行查看。

发现有更简单的命令

docker logs 60f486ec7c33

日志查看 docker容器启动失败原因

1.查看异常容器id

docker  ps -a   

-- id:e85e4839fcde

2.查看日志所在路径

docker inspect --format '{{.LogPath}}'  e85e4839fcde

3.打开错误日志,查看详情

cat  /var/lib/docker/containers/e85e4839fcded360bf5f788f851ce90853b3cf8b8731ab1336cb798b68d9221d/e85e4839fcded360bf5f788f851ce90853b3cf8b8731ab1336cb798b68d9221d-json.log

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • docker容器因报错无法启动问题的检查及修复容器错误并重启

    目录 问题复现 解决方法 总结 问题复现 使用: sudo docker ps -a 查看当前的docker容器: 我们想启动name为[docker-mongo]的这个容器,因此要执行 sudo docker start docker-mongo 但是执行后仍旧没有重启,大概率是重启的时候报错了,查看日志: sudo docker logs -f docker-mongo 可以看到其中有这样的日志: {"t":{"$date":"2022-12-29T0

  • Docker启动常用容器命令及配置详解

    目录 Docker 容器相关命令 Docker 启动mysql Docker 启动nginx Docker 启动redis Docker 启动rabbitmq Docker 启动Kafka Docker 启动tomcat Docker 启动jar包 Docker 启动PostgreSQL Docker 启动ElasticSearch Docker 容器相关命令 容器是基于Docker镜像被创建的. docker run [Options] image运行容器 docker run [Option

  • docker启动容器服务后访问失败的解决方案

    目录 第一种原因及修改方法 第二种:容器启动没有问题,并且在容器内部可以进行容器访问,但是外部无法进行访问 总结 关于docker启动容器服务之后,宿主机访问失败(解决方法) 注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启动的时候,启动语句中没有进行端口映射,导致在进行访问的时候无法找到正确的端口 正确的镜像的启动方式为 docker run --name 设置容器名 -it -d -p [宿主机端口号]

  • 如何解决docker容器启动失败

    问题:电脑重启之后,docker里面的mysql容器重启不了,不知道是什么原因 上面的步骤:如果sudo docker start name 能重新启动,也就是输入:docker ps 能看到自己所需要的服务已经开启,那就不需要再进行下面的步骤了,如果刚好像上面那样,那就接着看下文: 解决办法:删除启动不了的容器,然后再重新运行镜像. 注意此时的容器名已经变为mysql了,为关闭状态,再运行镜像时还是运行不了,但此时再启动镜像时就可以启动了 内容补充 1.查看docker占用的挂载点 cat /

  • 详解Shell脚本控制docker容器启动顺序

    1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让容器自动随docker启动,但是并不能保证是在数据库启动之后启动,如果数据库未启动,那么将导致应用启动失败;网上还有一种解决方法是通过docker-compose容器编排来控制启动顺序,这个博主研究的比较少. 2.解决思路 使用Shell脚本来控制,思路大致如下 探测数据库端口来检验数据库是否启动成

  • docker.service启动失败:Unit not found的原因及解决办法

    背景 因为最近一直在折腾Kubernetes集群版本升级.Docker版本升级,所以不停的把测试环境安装.还原.升级.降级,简直乱的不行.终于,在测试Docker版本升级后,启动Docker时,遇到了docker.service: Unit not found.问题虽然不大,但是却折磨了我几个小时,所以在此mark一下. 操作系统:Red Hat Enterprise Linux 7 原因1:docker.socket 最初在启动docker时遇到问题,是因为docker.socket引起的,虽

  • Docker Desktop启动失败的解决(Docker failed to initialize Docker Desktop is shutting down)

    目录 问题记录: 解决方法: 问题记录: 有一段时间没有使用docker了,突然要用到结果发现docker desktop都打不开了,会弹出如下错误: 一开始考虑的是会不会是docker版本太老的问题,使用docker version查了一下版本,发现cmd中docker指令还可以输出,但是docker version显示版本信息的同时也会有连接失败的错误信息存在.(而且查了一下版本并不落后,看来还是要解决初始化问题) docker version错误信息: error during conne

  • docker容器启动设置固定IP的实现

    docker安装以后的网络类型 [root@insure updev]# docker network ls NETWORK ID NAME DRIVER SCOPE 14da40175b01 bridge bridge local 65fb78c28e4f host host local e0d0c90c1462 none null local 说明:桥接网络默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对

  • Docker容器启动时初始化Mysql数据库的方法

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. 第一种方案是在容器启动后手动导入,太low了不行.第二种在Spring Boot客户端连接Mysql容器时初始化数据库,你可以参考使用flyway进行数据库版本控制一文,但是这依赖客户端的能力.能不能做到Mysql容器启动时就自己初始化数据库呢?当然可以!今天就来演示一下.全部代码见文末. 2.

  • 解决docker容器启动后马上退出的问题

    最近在看docker如何让容器在启动时直接运行某些进程,后来发现Dockerfile可以在容器启动的时候指定容器运行命令. CMD指定,但是每个Dockerfile只能有一条CMD指令,如果指定了多条CMD指定,只有最后一条会被执行. 于是就想了一个办法,在写了一个脚本,在脚本里面启动多个进程,在Dockerfile里运行这个脚本. 最后证明这个方法是可行的,在实验过程中遇到一个问题,容器启动后会马上停止. 经查阅资料: Docker容器同时只能管理一个进程,如果这个进程退出那么容器也就退出了,

  • tomcat启动异常:子容器启动失败(a child container failed during start)

    在学习过程中,出现这个问题,上网查了一下,总结以下几种解决方案,并找出自己的问题. 1.没有清理之前maven项目的历史. 解决方法:执行clean命令,然后重新启动项目. 操作:添加maven helper插件后,右键→run maven→clean ps:关于maven项目历史是啥我不太了解. 2.pom.xml文件中servlet-api依赖导入问题. 解决方法:在依赖中添加<scope>标签,内容为provided. 示例:<scope>provided</scope

  • docker容器启动后添加端口映射

    概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题.我曾经也问过度娘,很遗憾我没找到.本文就这个问题给出一个解决方法,旨在抛砖引玉.本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解. 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能. 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内

  • 详解利用ELK搭建Docker容器化应用日志中心

    概述 应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 收集.本文即将阐述如何利用ELK日志中心来收集容器化应用程序所产生的日志,并且可以用可视化的方式对日志进行查询与分析,其架构如下图所示: 架构图 镜像准备 镜像准备 ElasticSearch镜像 Logstash镜像 Kibana镜像 Nginx镜像(作为容器化应用来生产日志) 开启Linux系统Rsyslog服务 修改Rsyslog服务配置文件: v

随机推荐