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快速搭建PHP+Nginx+Mysql环境及踩坑
本文主要介绍了Docker快速搭建PHP+Nginx+Mysql环境及踩坑 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08
Docker下MySQL配置文件不生效的解决方法(超全面!)
在Docker中运行MySQL并遇到需要调整配置的情况时,比如想要关闭ONLY_FULL_GROUP_BY的严格模式,我们可以通过以下步骤来实现sql_mode的修改:以下是解决此类问题的步骤和思路,需要的朋友可以参考下2024-09-09


最新评论