Docker容器的调试技巧之docker logs与docker service logs解读
调试容器
不少刚接触Docker的同学,通常面对docker容器起不来,或者一直在重复启动中不知措施。
docker提供了一系列简单命令,很容易调试容器运行中的问题。
原理很简单,就是可以直接输出容器运行时(或过去式的)的日志。
通常有4种方式:
- docker run (控制台上启动容器)
- docker exec (附加进入后台容器)
- docker logs
- docker service logs
下面依次介绍之
控制台启动容器
打个比如调试启动redis容器
docker run -it -rm redis redis-server [redis 启动参数略...]
这样redis-server的日志输出直接打印到控制台上
缺点是,这种方式仅供启动容器调试时使用,无法操作后台运行中的容器,或已失效的容器。
docker exec 附加进入后台容器
有时候需要进入容器内,查看系统运行状况。这时候可以使用docker exec。
使用docker exec的前提是容器在运行中。因此当容器不能正常工作时,往往无法使用该命令
docker logs
实际上docker容器不管处于什么状态,都可以使用docker logs获取 容器的所有日志。
docker logs [容器名]
docker logs还有局限性,即无法获取docker swarm模式下,启动失败的容器日志
docker service logs
针对docker swarm模式,获取容器日志的命令。
一般,依次执行下列命令,得到某服务的容器名
docker service ls docker service ps [服务名]
然后就可以通过容器名,获取其日志了
docker service logs [容器名]
docker service logs显示日志为空
要让 docker service logs 正常工作,需要设置docker一些配置
vi /etc/docker/daemon.json
给该文件添加:
{ "log-driver": "json-file", "log-opts": { "labels": "production_status,geo", "env": "os,customer" } }
然后重启docker
service docker restart
关于docker service logs的详细介绍,可以参考官方文档:
https://docs.docker.com/engine/reference/commandline/service_logs/#extended-description
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Docker安装Redis并使用Another Redis Desktop Manager连接的方法
Redis 是一个使用C语言编写的、开源的(遵守 BSD 协议)、高性能的、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,这篇文章主要介绍了Docker安装Redis并使用Another Redis Desktop Manager连接,需要的朋友可以参考下2022-09-09docker安装tomcat并部署Springboot项目war包的方法
这篇文章主要介绍了docker安装tomcat并部署Springboot项目war包的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
最新评论