如何查看映射双端口的单个Docker容器日志
查看Docker容器日志的实用方法
嘿,既然你的多端口Docker容器已经正常跑起来了,那我来给你讲讲查看它日志的常用方式,还有一些能帮你高效排查问题的参数技巧:
基础日志查看
要是你只想一次性看全容器的日志内容,直接执行这条命令就行:sudo docker logs database-service
这里的database-service就是你启动容器时用--name指定的服务名,和你配置的${SERVICE_NAME}对应。实时跟踪日志(你用的-f参数详解)
你现在用的-f(follow)参数是用来实时盯着日志输出的,和Linux里的tail -f效果一样。如果执行后没看到内容,大概率是容器当前没产生新日志,或者应用把日志写到了容器内部的文件里(而不是输出到stdout/stderr)。
另外,你可以搭配--tail参数只跟踪最后N行日志,比如只想看最近100行并实时更新:sudo docker logs database-service -f --tail 100筛选指定时间范围的日志
要是你只想看某个时间段的日志,用--since和--until参数就很方便:- 查看最近30分钟的日志:
sudo docker logs database-service --since 30m - 查看2024-05-01 10:00到现在的日志:
sudo docker logs database-service --since "2024-05-01T10:00:00" - 查看某个时间点之前的日志:
sudo docker logs database-service --until "2024-05-01T12:00:00"
- 查看最近30分钟的日志:
显示日志时间戳
默认日志可能不带时间,加上-t参数就能给每条日志加上时间戳,排查问题时能更清晰地追踪时序:sudo docker logs database-service -t查看容器内部的日志文件(如果日志没输出到控制台)
有些应用会把日志写到容器内的文件里(比如/var/log/app.log),这时候你可以通过以下方式查看:- 直接在宿主机上读取容器内的日志文件:
sudo docker exec -it database-service cat /var/log/app.log - 进入容器的交互式shell,自己浏览日志:
sudo docker exec -it database-service bash - 把容器内的日志文件拷贝到宿主机上慢慢看:
sudo docker cp database-service:/var/log/app.log ./app.log
- 直接在宿主机上读取容器内的日志文件:
内容的提问来源于stack exchange,提问作者Anand Deshmukh




