컨테이너의 로그가있는 로그 파일은 어디에 있습니까?


117

.NET을 사용하여 여러 컨테이너를 실행하고 있습니다 docker-compose. 명령으로 애플리케이션 로그를 볼 수 있습니다 docker-compose logs. 그러나 예를 들어 어딘가에 보내기 위해 원시 로그 파일에 액세스하고 싶습니다. 어디에 있습니까? 각 컨테이너 (컨테이너 내부?)마다 별도의 로그라고 생각하지만 어디에서 찾을 수 있습니까?

답변:


191

컨테이너의 로그는 다음 위치에서 찾을 수 있습니다.

/var/lib/docker/containers/<container id>/<container id>-json.log

(기본 로그 형식 인 json을 사용하는 경우)


3
과 같은 많은 폴더가 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff있습니다. 특정 컨테이너에 대해 살펴볼 폴더를 어떻게 알 수 있습니까?
Praveen Sripati

3
@PraveenSripati 실행중인 컨테이너의 컨테이너 ID는 첫 번째 열에 표시됩니다.docker ps
CS

1
@PraveenSripati write docker ps, ID와 함께 사용 가능한 모든 컨테이너를 얻을 수 있습니다. 원하는 컨테이너의 ID를 복사 한 다음 /var/lib/docker/containers/run 에서 복사합니다 ls | grep <paste the copied docker ID>. 그럼 당신은 그 고정 표시기 컨테이너 볼 수 있습니다
TheLebDev

cd /var/lib/docker/containers/ -bash : cd : / var / lib / docker / containers / : 권한 거부 sudo cd /var/lib/docker/containers/ sudo : cd : 명령을 찾을 수 없음
canbax

2
@Chris 나는 docker ps --no-trunc전체 ID를보기 위해 해야 했다
Dan Z

97

docker inspect각 컨테이너는 로그 위치를 확인할 수 있습니다 .

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

그리고 로그가 집합 적 크기를 관리 할 위치를 파악하거나 로깅 자체의 매개 변수를 조정하려는 경우 다음과 같은 관련성을 찾을 수 있습니다.

로그 용으로 예약 된 공간 수정

이것은 로그 기록을 지우는 기능에 대한 요청 (문제 1083) 에서 가져온 것입니다 .

Docker 1.8 및 docker-compose 1.4에는 docker compose 로그 드라이버 및 log-opt max-size를 사용하여 로그 크기를 제한하는 방법이 이미 있습니다 .

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

docker compose 파일 버전 '2'에서 구문이 약간 변경되었습니다.

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(두 구문 모두에서 숫자는 따옴표로 묶인 문자열로 표현됩니다.)

docker-compose logs종료되지 않는 가능한 문제

  • 문제 1866 : logs컨테이너가 이미 중지 된 경우 명령 이 종료되지 않음

1
짧은 버전 : docker inspect -f '{{.LogPath}}'$ INSTANCE_ID
Bienvenido David

12

각 컨테이너의 로그가 차지하는 공간을 확인하려면 다음을 사용하십시오.

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(당신은해야 할 수도 sudo이전을 ls).


허가가 거부되었습니다.
Shakedk

1
마지막에 sudo는 도움을 추가 : docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk

2

적은 수의 로그 파일을 직접 보려면 다음을 사용합니다.

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

./viewLogs.sh CONTAINERNAME로 실행


2

Windows에서 기본 위치는 C:\ProgramData\Docker\containers\<container-id>-json.log입니다.


이것은 개발을 위해 로컬 컨테이너를 실행할 때입니다! 감사합니다-이 정보를 찾기가 매우 어려웠습니다
Percy

1

2018 년 8 월 22 일부터 로그는 다음 위치에서 찾을 수 있습니다.

/data/docker/containers/<container id>/<container id>-json.log

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.