当Docker容器不断重启时,查看日志是诊断问题的关键步骤。以下是几种查看日志的方法:
docker logs <container_name_or_id>
查看最近100行日志:
docker logs --tail 100 <container_name_or_id>
实时查看日志输出:
docker logs -f <container_name_or_id>
如果容器已经重启多次,可以查看之前实例的日志:
docker logs --previous <container_name_or_id>
docker inspect -f "{{.State.Restarting}} {{.State.Error}} {{.RestartCount}}" <container_name_or_id>
查看完整状态信息:
docker inspect <container_name_or_id> | grep -A 10 "State"
如果容器崩溃严重,可能需要查看Docker守护进程日志:
journalctl -u docker.service
或查看系统日志:
cat /var/log/syslog | grep docker
docker inspect -f "{{.State.ExitCode}}" <container_name_or_id>
如果日志很大,可以限制输出:
docker logs --tail 500 <container_name_or_id> | less
如果容器还能短暂运行:
docker exec -it <container_name_or_id> bash
# 然后查看容器内的应用日志文件
对于生产环境,考虑使用: - ELK Stack (Elasticsearch, Logstash, Kibana) - Fluentd - Loki + Grafana
容器不断重启:检查退出代码和重启策略
docker inspect -f "{{.State.ExitCode}} {{.HostConfig.RestartPolicy.Name}}" <container_name_or_id>
内存不足:查看OOM状态
docker inspect -f "{{.State.OOMKilled}}" <container_name_or_id>
健康检查失败:查看健康状态
docker inspect -f "{{.State.Health.Status}}" <container_name_or_id>
通过以上方法,您应该能够找到容器不断重启的根本原因。