微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx – docker run,docker exec和logs

如果我做 :

docker run --name Nginx -d Nginx:alpine /bin/sh -c 'echo "Hello stdout" > /dev/stdout'

我做的时候能看到“Hello stdout”:

docker logs Nginx

但是当容器运行时(docker run –name Nginx -d Nginx:alpine)我做了:

docker exec Nginx /bin/sh -c 'echo "Hello stdout" > /dev/stdout'

或当我附上容器时:

docker exec -it Nginx /bin/sh

然后 :

echo "Hello stdout" > /dev/stdout

我在docker日志中看不到任何内容.由于我的Nginx访问日志被重定向到/ dev / stdout,我也看不到它们.

这个stdout发生了什么?

解决方法:

当docker exec你可以看到你有几个进程

/#ps -ef
PID用户时间命令
    1 root 0:00 Nginx:master进程Nginx -g daemon off;
    6 Nginx 0:00 Nginx:工作进程
    7根0:00 / bin / sh
   17根0:00 ps -ef
/#

在Linux中,每个进程在/ proc / pid / fd中都有自己的stdin,stdout,stderr(和其他文件描述符)

所以,用您的docker exec(pid 7)显示内容

的/ proc / 7 / FD / 1

而你的Nginx进程(pid 1)显示他的输出

的/ proc / 1 / FD / 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐