如果我做 :
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