use*_*669 5 docker docker-compose
我可以通过以下操作跟踪单个泊坞窗容器的日志:
docker logs -f container1
Run Code Online (Sandbox Code Playgroud)
但是,如何在同一屏幕上显示多个容器的日志?
docker logs container1 container2
Run Code Online (Sandbox Code Playgroud)
不起作用。它给出了一个错误:
“docker logs” requires exactly 1 argument(s).
Run Code Online (Sandbox Code Playgroud)
谢谢。
如果您使用 docker-compose,这将显示来自不同容器的所有日志
docker-compose logs -f
Run Code Online (Sandbox Code Playgroud)
该docker logs命令无法传输多个日志文件。
docker-compose logs -f可以流式传输项目的日志
您可以使用默认的日志记录驱动程序json之一将日志发送到公共点。systemdjournald或syslog驱动程序可以轻松地在大多数系统上运行。任何其他集中式日志系统也可以工作。
请注意, syslog在 Docker 守护进程上进行配置意味着该docker logs命令无法再查询日志,它们只会存储在系统日志放置的位置。
一个简单的daemon.json系统日志:
{\n "log-driver": "syslog",\n "log-opts": {\n "syslog-address": "tcp://10.8.8.8:514",\n "syslog-format": "rfc5424"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n您可以编写通过 API 连接到每个容器并通过 Websocket 传输日志的工具。其中两个 Java 库是docker-client和docker-java。
\n或者在 Node.js 中运行多个docker logs并 munge 输出:
const { spawn } = require(\'child_process\')\n\nfunction run(id){\n let dkr = spawn(\'docker\', [ \'logs\', \'--tail\', \'1\', \'-t\', \'--follow\', id ])\n dkr.stdout.on(\'data\', data => console.log(\'%s: stdout\', id, data.toString().replace(/\\r?\\n$/,\'\')))\n dkr.stderr.on(\'data\', data => console.error(\'%s: stderr\', id, data.toString().replace(/\\r?\\n$/,\'\')))\n dkr.on(\'close\', exit_code => {\n if ( exit_code !== 0 ) throw new Error(`Docker logs ${id} exited with ${exit_code}`)\n })\n}\n\nlet args = process.argv.splice(2)\nargs.forEach(arg => run(arg))\nRun Code Online (Sandbox Code Playgroud)\n它会在写入时转储数据docker logs。
\xe2\x97\x8b\xe2\x86\x92 node docker-logs.js 958cc8b41cd9 1dad69882b3d db4b844d9478\n958cc8b41cd9: stdout 2018-03-01T06:37:45.152010823Z hello2\n1dad69882b3d: stdout 2018-03-01T06:37:49.392475996Z hello\ndb4b844d9478: stderr 2018-03-01T06:37:47.336367247Z hello2\n958cc8b41cd9: stdout 2018-03-01T06:37:55.155137606Z hello2\ndb4b844d9478: stderr 2018-03-01T06:37:57.339710598Z hello2\n1dad69882b3d: stdout 2018-03-01T06:37:59.393960369Z hello\nRun Code Online (Sandbox Code Playgroud)\n
如果您有权访问 docker 服务器并拥有 root 权限:
tail -f /var/lib/docker/containers/*/*.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5235 次 |
| 最近记录: |