docker logs命令(基础且最常用)docker logs是Docker原生提供的日志查看工具,适用于大多数场景,支持多种选项灵活控制日志输出。
docker logs <容器ID或名称> -f或--follow选项,类似tail -f,持续跟踪容器最新日志输出。docker logs -f <容器ID或名称> --tail指定显示的日志条数(默认显示全部),常用于快速查看最新日志。docker logs --tail 100 <容器ID或名称> # 显示最后100条日志 --since(开始时间)和--until(结束时间)筛选日志,支持相对时间(如10m表示10分钟前)和绝对时间(如2025-01-01T12:00:00Z)。docker logs --since 30m <容器ID或名称> # 最近30分钟的日志 docker logs --since "2025-01-01T00:00:00Z" --until "2025-01-01T23:59:59Z" <容器ID或名称> # 指定日期范围的日志 >,将日志保存到本地文件,便于后续分析。docker logs -f <容器ID或名称> > container_logs.txt journalctl命令(系统级日志查看)若Docker服务通过systemd管理(默认情况),可通过journalctl查看容器日志,尤其适合查看系统级日志或容器崩溃时的内核日志。
journalctl -u docker.service docker ps获取容器名称,再用-t选项过滤该容器的日志。journalctl -u docker.service -t <容器名称> -f # 实时查看特定容器日志 journalctl支持--since和--until选项,用法与docker logs类似。journalctl -u docker.service --since "2025-01-01T00:00:00Z" --until "2025-01-01T23:59:59Z" 若需要更直观的日志查看体验,可使用以下可视化工具:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 9999:8080 amir20/dozzle:latest 访问http://<服务器IP>:9999,即可查看所有容器的实时日志。docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/user/data:/data portainer/portainer-ce 访问http://<服务器IP>:9000,登录后选择容器,点击“Logs”选项卡即可查看。Docker默认使用json-file驱动,容器日志以JSON格式存储在宿主机上,可直接查看。
docker inspect获取容器日志文件的绝对路径。docker inspect --format='{{.LogPath}}' <容器ID或名称> 示例输出:/var/lib/docker/containers/<容器ID>/<容器ID>-json.logcat、less或tail命令查看日志文件内容。cat /var/lib/docker/containers/<容器ID>/<容器ID>-json.log tail -f /var/lib/docker/containers/<容器ID>/<容器ID>-json.log # 实时查看 /etc/docker/daemon.json配置日志轮转(默认未开启)。{ "log-driver": "json-file", "log-opts": { "max-size": "10m", // 单个日志文件最大10MB "max-file": "3" // 最多保留3个文件(当前+2个轮转) } } 修改后重启Docker服务生效:sudo systemctl restart docker。