docker logs不会记录已分离的exec

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker logs不会记录已分离的exec相关的知识,希望对你有一定的参考价值。

我的Dockerfile是

FROM node:4

RUN npm install -g yarn

WORKDIR /app

我运行docker run -d并将当前工作目录挂载为卷。所有的deps都是由yarn安装的。我有一个npm脚本来lint文件。

如果我做docker exec -it [container] npm run lint它按预期工作,我可以看到所有日志。但是,如果我做docker exec -itd [container] npm run lint,它会立即退出,这是预期的。但我无法通过运行docker logs [container]来查看日志。如何重新连接exec或只查看日志?

我试过docker attach [container]它转到nodejs的repl。这是为什么?

答案

如“Docker look at the log of an exited container”中所述,您可以使用docker logs

docker logs -t <container>

这将显示stdout / stderr(由于-t选项,时间戳)。

对于最后50行这些日志:

docker logs -t <container id> | tail -n 50

注意:仅当npm run lint由您的容器运行时才会起作用(docker run <image> npm run lint

如果您的docker exec立即退出,那么是的,容器本身不会产生任何日志。

以上是关于docker logs不会记录已分离的exec的主要内容,如果未能解决你的问题,请参考以下文章

解决docker容器生成的日志文件过大的方法

Docker命令之 exec

docker 命令详解:exec

Docker 命令- exec命令

docker-compose exec python 输入设备不是 AWS EC2 UserData 中的 TTY

docker exec 在 cron 中不工作