docker的日志
来源:互联网 发布:cam编程视频 编辑:程序博客网 时间:2024/06/06 02:55
默认情况下,service docker start或docker -d,docker后台进程默认会在当前终端输出日志,回车几下又可以获得shell,继续执行其他命令,然而当docker有日志需要输出到屏幕时,会再次进入到日志输出,很不方便。
使用docker -d > /path/to/log/file,把docker的日志输出重定向到文件。
同时你应该修改 /etc/init.d/docker 的代码,把 start-stop-daemon 的输出也重定向。
当你运行一个容器,容器的状态存活在 /var/lib/docker/containers/<id>下,例如
root@precise64:/var/lib/docker/containers/fe38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374# ls -la
total 44
drwx------ 3 root root 4096 Mar 14 19:56 .
drwx------ 83 root root 12288 Mar 14 21:53 ..
-rw-r--r-- 1 root root 106 Mar 14 19:56 config.env
-rw-r--r-- 1 root root 1522 Mar 14 19:56 config.json
-rw------- 1 root root 241 Mar 14 19:56 fe38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374-json.log
-rw-r--r-- 1 root root 126 Mar 14 19:56 hostconfig.json
-rw-r--r-- 1 root root 13 Mar 14 19:56 hostname
-rw-r--r-- 1 root root 181 Mar 14 19:56 hosts
drwxr-xr-x 2 root root 4096 Mar 14 19:56 root
文件 e38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374-json.log 是容器的日志文件。每一行是一个 JSON 对象并且对于容器输入和输出的每一行这有一个界限。
{"log":"root@c835298de6dd:/# ls\r\n","stream":"stdout","time":"2014-03-14T22:15:15.155863426Z"}
{"log":"bin boot dev\u0009etc home lib\u0009lib64 media mnt opt\u0009proc root run sbin selinux\u0009srv sys tmp usr var\r\n","stream":"stdout","time":"2014-03-14T22:15:15.194869963Z"}
可通过编写或使用数据收集器,解析日志文件的json对象,并把数据收集到特定的地方。在一个在线环境,实际的日志内容可以被发送到一个 elasticsearch 集群,并使用 kibana 或 graylog2 查看。二选一,这也有使用 JSON 工作的主机服务。
这个方法提供了一下好处:
主机可以使用一个单独的收集 agent 转发任何容器的日志到一个中央日志服务器.
不需要要求应用程序使用 syslog 或是写日志到特定的卷。
主机可以访问容器日志以及任何在容器文件系统上的日志文件。
主机可以为容器轮转日志。
这个方法的一个缺点就是它直接访问 docker 文件系统而没有使用 API,这意味着它在未来可能出现问题,因为如果未来 docker 版本改变了它怎样在主机文件系统存储容器日志的话。
使用docker -d > /path/to/log/file,把docker的日志输出重定向到文件。
同时你应该修改 /etc/init.d/docker 的代码,把 start-stop-daemon 的输出也重定向。
当你运行一个容器,容器的状态存活在 /var/lib/docker/containers/<id>下,例如
root@precise64:/var/lib/docker/containers/fe38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374# ls -la
total 44
drwx------ 3 root root 4096 Mar 14 19:56 .
drwx------ 83 root root 12288 Mar 14 21:53 ..
-rw-r--r-- 1 root root 106 Mar 14 19:56 config.env
-rw-r--r-- 1 root root 1522 Mar 14 19:56 config.json
-rw------- 1 root root 241 Mar 14 19:56 fe38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374-json.log
-rw-r--r-- 1 root root 126 Mar 14 19:56 hostconfig.json
-rw-r--r-- 1 root root 13 Mar 14 19:56 hostname
-rw-r--r-- 1 root root 181 Mar 14 19:56 hosts
drwxr-xr-x 2 root root 4096 Mar 14 19:56 root
文件 e38c4124f36d0a5b2a38ea7dd58fe88ac92980286f1f6a7b7ed3ced7c994374-json.log 是容器的日志文件。每一行是一个 JSON 对象并且对于容器输入和输出的每一行这有一个界限。
{"log":"root@c835298de6dd:/# ls\r\n","stream":"stdout","time":"2014-03-14T22:15:15.155863426Z"}
{"log":"bin boot dev\u0009etc home lib\u0009lib64 media mnt opt\u0009proc root run sbin selinux\u0009srv sys tmp usr var\r\n","stream":"stdout","time":"2014-03-14T22:15:15.194869963Z"}
可通过编写或使用数据收集器,解析日志文件的json对象,并把数据收集到特定的地方。在一个在线环境,实际的日志内容可以被发送到一个 elasticsearch 集群,并使用 kibana 或 graylog2 查看。二选一,这也有使用 JSON 工作的主机服务。
这个方法提供了一下好处:
主机可以使用一个单独的收集 agent 转发任何容器的日志到一个中央日志服务器.
不需要要求应用程序使用 syslog 或是写日志到特定的卷。
主机可以访问容器日志以及任何在容器文件系统上的日志文件。
主机可以为容器轮转日志。
这个方法的一个缺点就是它直接访问 docker 文件系统而没有使用 API,这意味着它在未来可能出现问题,因为如果未来 docker 版本改变了它怎样在主机文件系统存储容器日志的话。
0 0
- docker的日志
- Docker daemon日志的位置
- dcos - docker的日志收集
- Docker 的日志相关整理
- Docker 容器日志的那些事儿
- docker容器日志的收集---fluentd
- Centos 7安装docker的日志
- Docker守护进程的配置及日志
- docker日志的故事——详解Docker日志运维
- docker 日志位置
- Docker日志收集-splunk
- docker清理日志
- Docker 容器日志收集
- docker清理日志
- Docker容器日志清理
- docker日志发往fluentd
- 查看Docker容器日志
- Docker容器内应用的日志收集方案
- java 日志记录使用slf4j优于log4j的原因
- svn与git命令比较
- List<Map> 排序
- 欢迎使用CSDN-markdown编辑器
- 【高德地图API】从零开始学高德JS API(八)——地址解析与逆地址解析
- docker的日志
- python中的三个读read(),readline()和readlines()
- spring框架学习之一
- 7.9
- 让Docker功能更强大的10个开源工具
- 欢迎使用CSDN-markdown编辑器
- OC基础知识总结
- ios开发小技巧之 pch文件的添加以及自定义的LOG
- Launch Screen在iOS7/8中的实现