1.容器中的标准输出(STDOUT,STDERR)
1.查看少量的日志信息
docker logs containerId
2.对于大量的标准输出
log -------> driver -------> (none local json-file syslog journald gelf .....)
①docker run -itd --log-driver none --log-opt max-size=10m --log-opt max-file=3 --log-opt compress=false alpine ash 启动时可以指定使用的日志驱动!
②local (默认存储在/var/lib/docker/containers/容器id/local-logs/ 以container.log命名)
③其他引擎的存储位置类似,也可以存到其他服务器上(syslog)
3.针对文本文件,生产环境的存储
①nginx 软连接到
/dev/stdout
和/dev/stderr
,也就是标准输出,所以这类容器是可以使用Docker官方的日志驱动。②文本文件: 比如.log ,存在在于容器内部,并没有重定向到 容器的标准输出的日志。
③方案:
a. docker run -d --name tomcat-bind -P --mount type=bind,src=/opt/logs/,dst=/usr/local/tomcat/logs/ tomcat
b. docker volume create tomcat docker run -d --name tomcat-volume -P --mount type=volume,src=tomcat,dst=/usr/local/tomcat/logs/ tomcat
ls -l /var/lib/docker/volumes/tomcat/_data/
c. docker run -d --name tomcat-test -P tomcat docker inspect -f '{{.GraphDriver.Data.MergedDir}}' containerId
/var/lib/docker/overlay2/c10ec54bab8f3fccd2c5f1a305df6f3b1e53068776363ab0c104d253216b799d/merged