Docker는 종료 된 컨테이너의 로그를 봅니다.


답변:


111

사용 docker logs. 중지 된 컨테이너에 대해서도 작동하며 컨테이너의 기본 프로세스의 전체 STDOUT 및 STDERR 스트림을 캡처합니다.

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World

4
몇 초마다 다시 시작되는 Docker 스택의 경우 : stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"스택 이름이 명령 시작 부분에 지정됩니다.
x-yuri

19

docker logs --tail=50 <container id> 마지막 50 줄-컨테이너가 오랫동안 실행되었을 때 유용합니다.


1
@Whitefret, 귀하의 제안으로 답변을 업데이트했습니다. 원래의 대답은 전체 로그를 끌어 내리고 로컬에서 꼬리를 달았을 것입니다. 큰 로그와 느린 네트워크로 인해 매우 오랜 시간이 걸렸을 것입니다
Matthew

: 경보 관리자에서 나는 있지만이이 경고에 관련되어 있는지 경우이 메시지를 많이 볼
Arnav 보스

11

아래 명령을 사용하여 종료 된 컨테이너에서도 로그를 복사 할 수 있습니다.

docker cp container_name :path_of_file_in_container destination_path_locally

예 :

docker cp sravya:/tmp/report /root/mylog

7

종료 된 컨테이너의 로그 파일을 더 적게, 파일 끝으로 스크롤하여 직접 보려면 다음을 사용합니다.

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

./viewLogs.sh CONTAINERNAME로 실행

이 방법은 docker logs파일을 스트리밍하는 대신 직접 열 수 있다는 점에서 기반 접근 방식에 비해 이점 이 있습니다.

LogPath / File은 일반적으로 루트 소유이므로 sudo가 필요합니다.

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