Docker 容器在 Ubuntu 上的日志管理
一 日志类型与查看入口
sudo journalctl -u docker.service;如需查看最近 100 条:sudo journalctl -u docker.service -n 100。早期 Ubuntu 14.04 可查看文件:/var/log/upstart/docker.log。docker logs 查看。docker logs <容器名或ID>;实时跟踪:docker logs -f <容器名或ID>;使用 Docker Compose:docker-compose logs <服务名>。docker logs 才能获取日志;使用 syslog / fluentd / none 等驱动时,docker logs 不适用或为空。二 日志轮转与大小限制
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
应用更改:sudo systemctl restart docker。该方式对所有新创建容器生效。docker run -d --name myapp --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 nginx。cat /dev/null > /var/lib/docker/containers/<id>/<id>-json.log),再启动。--log-opt mode=non-blocking --log-opt max-buffer-size=1MB(默认驱动需支持)。三 日志驱动选择与集中化
{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://localhost:514",
"tag": "{{.Name}}"
}
}
应用:sudo systemctl restart docker。{
"log-driver": "journald"
}
应用:sudo systemctl restart docker。docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=10.2.3.4:24224 \
--log-opt tag="docker.{{.Name}}" \
your-image
四 生产实践与排障清单
docker logs 统一查看。print/debug 输出;为驱动设置合理的 max-size / max-file;必要时启用 non-blocking 模式。docker inspect --format='{{.HostConfig.LogConfig.Type}}' <容器名>。du -d1 -h /var/lib/docker/containers | sort -h,定位异常容器后按上节方法处理。