# 查看容器最新日志
docker logs <container_name>
# 查看实时日志流
docker logs -f <container_name>
# 显示时间戳
docker logs -t <container_name>
# 查看最后N行日志
docker logs --tail=100 <container_name>
Docker支持多种日志驱动,可以在/etc/docker/daemon.json
中配置:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
常用日志驱动:
- json-file
(默认)
- syslog
- journald
- gelf
(Graylog Extended Log Format)
- fluentd
- awslogs
(AWS CloudWatch)
部署方案:
# 使用Docker Compose部署ELK
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5000:5000"
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
ports:
- "5601:5601"
depends_on:
- elasticsearch
Logstash配置示例 (logstash.conf
):
input {
tcp {
port => 5000
codec => json
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "docker-logs-%{+YYYY.MM.dd}"
}
}
# 使用Fluentd作为日志收集器
docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 <your_image>
用于指标监控和可视化:
# docker-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
# 在Dockerfile中添加健康检查
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/health || exit 1
# docker-compose.yml
services:
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
promtail:
image: grafana/promtail:latest
volumes:
- /var/lib/docker/containers:/var/lib/docker/containers
- /var/run/docker.sock:/var/run/docker.sock
分布式追踪: 结合Jaeger实现请求链路追踪
机器学习异常检测: 使用Elasticsearch的ML功能或第三方工具进行异常模式识别
通过以上方法和工具组合,您可以构建一个完整的Docker容器日志分析和异常监测系统,帮助您及时发现和解决生产环境中的问题。