我知道有很多关于如何阅读 docker 日志的问题,这些问题的回答是:
$ docker logs containername
但是,我正在使用一个临时容器,该容器是使用 -rm 创建的,因此在创建它后我没有时间调用日志。但我仍然对查看它如何运行的日志感兴趣。
我的命令是:
docker run --name myname --rm python-my-script:3.7.4 - --myflags "myargs"
现在,我想看看我的脚本如何使用这些参数运行。我的入口点有一个脚本,它应该有效地读取“myargs”并将其打印到控制台。
但是当我这样做时:
docker logs myname
Error: No such container: myname
或者,如果我真的很快:
Error response from daemon: can not get logs from container which is dead or marked for removal
如何查看不再运行的容器的日志?我不想安装像 syslog 这样重量级的东西。
最佳答案
Docker 的默认日志驱动程序是 json-file
,您可以使用 docker logs
看见了。但是如果你删除容器或者使用 --rm
运行容器时,删除容器后将删除日志。
对于您的情况,您需要更改日志驱动程序以确保即使在容器删除后仍然可以看到日志。
有很多日志驱动程序可以满足您的要求,请参阅 this .例如 fluentd、splunk 等。
这里,给出一个最简单的保留日志的方法,使用journald ,供您引用的最小示例:
$ docker run --log-driver=journald --rm --name=trial alpine echo "hello world"
--rm
, 检查是否 docker logs
好的:$ docker logs trial
Error: No such container: trial
$ journalctl CONTAINER_NAME=trial --all
-- Logs begin at Mon 2018-12-17 21:35:55 CST, end at Mon 2019-08-05 14:21:19 CST. --
Aug 05 14:18:26 shubuntu1 a475febe91c1[1975]: hello world
你可以看到你可以使用 journalctl 来获取日志内容“hello world”,即使容器被移除。
顺便说一句,如果您不想指定
--log-driver
每次启动容器时,您也可以在 daemon.json
中将其设置为默认日志驱动程序,见 this :{
"log-driver": "journald"
}
同时,您仍然可以使用
docker logs
如果容器未删除,则获取日志。
关于docker - 查看临时 docker 容器的标准输出和日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342946/