programing

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

iphone6s 2023. 8. 25. 23:24
반응형

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

다음을 사용하여 여러 컨테이너를 실행하고 있습니다.docker-compose명령을 사용하여 응용 프로그램 로그를 볼 수 있음docker-compose logs그러나 raw 로그 파일에 액세스하여 예를 들어 어딘가로 보내고 싶습니다.그것은 어디에 위치해 있나요?각 용기(용기 안?)마다 별도의 로그인 것 같은데 어디서 찾을 수 있나요?

컨테이너의 로그는 다음에서 확인할 수 있습니다.

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

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

각 컨테이너에서 로그 위치를 확인할 수 있습니다.

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

또한 로그의 전체 크기를 관리하거나 로그 자체의 매개 변수를 조정하기 위해 로그 위치를 파악하는 경우 다음과 관련이 있음을 알 수 있습니다.

로그에 예약된 공간 크기 수정

는 로그 기록을 지우는 기능 요청(1083호)에서 가져온 것입니다.

도커 1.8과 도커 구성 1.4는 도커 구성 로그 드라이버와 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"

도커가 버전 '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컨테이너가 이미 중지된 경우 종료되지 않음

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

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

(필요할 수 있음)sudo전에ls).

docker inspect <containername> | grep log

윈도우즈의 기본 위치는 다음과 같습니다.C:\ProgramData\Docker\containers\<container-id>-json.log.

위치는 다음과 같습니다.

Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61

예를 들어

DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker

컨테이너 로그의 위치는 다음에서 확인할 수 있습니다.

DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log

여기 예가 있습니다.

enter image description here

로그 파일을 더 적게 보려면 다음을 사용합니다.

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

로 실행되는../viewLogs.sh CONTAINERNAME

2018년 8월 22일 기준 로그는 다음에서 확인할 수 있습니다.

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

컨테이너당 로그 크기를 보려면 다음 bash 명령을 사용할 수 있습니다.

for cont_id in $(docker ps -aq); do cont_name=$(docker ps | grep $cont_id | awk '{ print $NF }') && cont_size=$(docker inspect --format='{{.LogPath}}' $cont_id | xargs sudo ls -hl | awk '{ print $5 }') && echo "$cont_name ($cont_id): $cont_size"; done

출력 예:

container_name (6eed984b29da): 13M
elegant_albattani (acd8f73aa31e): 2.3G

언급URL : https://stackoverflow.com/questions/33017329/where-is-a-log-file-with-logs-from-a-container

반응형