问题可能是一些新手。
我运行docker exec -it mycontainer bash
进入守护进程容器(postgresSQL),
和echo
一些东西。
现在我退出它,并使用docker logs mycontainer
以便看到我的回声。
根据
docker logs命令批量检索执行时存在的日志。 docker logs --follow命令将继续从容器的STDOUT和STDERR流式传输新输出。
容器的docker logs
监听STDOUT
,为什么我看不到我的字符串在其中回显?
答案 0 :(得分:1)
我假设仅对容器中的主进程进行日志记录。当exec创建一个新进程时,它不会被记录。
请注意docker logs
适用于运行命令中给出的进程,例如:
$ ID=$(docker run -d debian sh -c "while true; do echo "hello"; sleep 1; done;")
$ docker logs $ID
hello
hello
hello
hello
hello
答案 1 :(得分:1)
Docker引擎只存储ID为0的进程的stdout(即由Dockerfile的CMD指令启动的进程)。
顺便说一句,在您的Docker主机上,您可以通过查看文件/var/lib/docker/containers/<ID of your container>/<ID of your container>-json.log
来检查容器日志的内容。
此文件以JSON格式存储日志。