:고정 표시기 실행, 고정 표시기 간부와 내가 할 경우 로그
docker run --name nginx -d nginx:alpine /bin/sh -c 'echo "Hello stdout" > /dev/stdout'
내가 할 때 내가 "안녕하세요 표준 출력을"볼 수 있습니다
docker logs nginx
그러나 컨테이너가 실행되고 (고정 표시기 실행 - nginx를 -d의 nginx 이름 : 고산) 내가 할 :
:docker exec nginx /bin/sh -c 'echo "Hello stdout" > /dev/stdout'
또는 난과 용기를 연결할 때
docker exec -it nginx /bin/sh
한 다음 :
echo "Hello stdout" > /dev/stdout
나는 고정 표시기 로그에서 아무것도 볼 수 없습니다. 그리고 내 Nginx 액세스 로그는/dev/stdout으로 리디렉션되기 때문에 볼 수 없습니다.
이 stdout에서 현재 무슨 일이 일어나고 있습니까?
이해하기 위해 노력하고있어,하지만 : 1. 문제가 간단한 "고산"과 reproductible입니다 image 2. 오직/dev/stdout이 하나 뿐이므로 그가/proc/xxx/fd/1을 그가 선택해야한다고 생각한다. 내가 틀린가? – Tristan
또한 공식 Nginx 이미지에서 나온 지침이 절대로 작동하지 않는다고 말하는가? # 요청 및 오류 로그를 도커 로그 수집기로 전달 RUN ln -sf/dev/stdout /var/log/nginx/access.log \ \t && ln -sf/dev/stderr /var/log/nginx/error.log – Tristan
좋아, 나는 스스로의 질문에 답할 것이다 : 1. 도커 임원이 주 프로세스가 아닌 셸을 만들 것이라고 생각한다. 2. 아니오, 하나의/dev/stdout뿐 아니라 현재 프로세스에 연결된 동적 장치이다. 3. 컨테이너 안의 파일을 표시하지 않고 액세스 로그와 오류 로그가 모두 표시되는 "docker logs nginx"만 사용하면 지침이 실제로 작동합니다. 지속적 로그가 필요한 경우에는 볼륨 만 사용하십시오. – Tristan