2017-11-13 8 views
0

NGINX 컨테이너를 만들고 있습니다. 모든 로그를 기본 볼륨이 아닌 마운트 된 볼륨에 쓰려고합니다. 이것은 nginx.conf 파일을 access_log 및 error_log를 마운트 된 볼륨의 폴더로 지정하여 업데이트 할 수 있습니다. 각 컨테이너가 마운트 된 볼륨 내의 컨테이너 특정 폴더에 쓰길 원합니다. 예를 들어DOCKERFILE에서 변수를 사용하는 방법

: 컨테이너 이미지 이름 : mycontainerapp 탑재 된 볼륨 : 그런 다음 내가 원하는 /logdirectory : /var/log/logdirectory/mycontainerapp/{containerID}/log

이 방법을 가리 키도록, 내가 가질 수있는 여러 컨테이너 공통 탑재 된 볼륨에 기록합니다.

AFAIK, 나는 용기의 ID를 얻을 수 있습니다에서/proc 디렉토리/1/cpuset에 내가 containerID을 만들고 그것을 사용하는 것이 읽을 수 어떻게,

질문은 컨테이너 ID를 얻을 수있는 다른 방법의 확실하지 않다 DOCKERFILE을 사용하여 마운트 된 볼륨 (폴더 이름 포함)?

또한 달성하려는 목표에 대해 더 나은 접근 방법이있는 경우, 내가 도커에게 초보자 일 때 알려 주시기 바랍니다.

+0

호스트 또는 컨테이너에서 컨테이너 ID를 읽으려고합니까? 'docker ps'와'docker inspect '를 최소한보십시오. – user2915097

답변

0

Docker에는 표준 로그 파일을 제거하는 logging mechanism이 포함되어 있습니다. stdoutstderr으로 전송 된 모든 데이터는 Dockers 로깅 인터페이스에 의해 캡처됩니다.

Docker 호스트의 로그를 중앙 로깅 서비스 (Graylog, Syslog, AWS CloudWatch, ETW, Fluentd, Google Cloud, Splunk)로 발송할 수있는 번호는 logging drivers입니다. json 드라이버가 Docker 호스트에 로컬로 저장된 기본값입니다. journald도 저장되어 로컬에서 액세스 할 수 있습니다. nginx를 설정, 또는 그 문제에 대한 모든 컨테이너에서

, send the access log stdout or /dev/fd/1 and send the error log to stderr or /dev/fd/2

daemon off; 
error_log /dev/fd/2 info; 

http { 
    access_log /dev/fd/1; 
    ... 
} 

모든 컨테이너에이 개념을 적용하기 시작하면이 모든 로그 관리 요구 사항은 컨테이너/응용 프로그램 수준에서 제거하고까지 밀어 숙주. 컨테이너 meta data can be attached to logs. 로깅 메커니즘을 이동하거나 변경하는 것이 더 쉬워집니다. Swarm과 같은 클러스터 된 설정으로 이동하는 것은 번거롭지 않습니다. 이것은 Docker가 푸시하는 세계의 컨테이너 아이디어 당 1 개의 프로세스와 관련이 있습니다.

관련 문제