[docker] docker-compose run을 사용하여 로그 출력을 보는 방법은 무엇입니까?

사용할 때 docker-compose updocker-compose.yml파일의 모든 컨테이너에 대한 로그를 볼 수 있습니다 .

그러나 사용할 때 docker-compose run app콘솔 출력 만 표시 app되지만 app종속 된 서비스는 표시되지 않습니다 . 다른 서비스에 대한 로그 출력을 어떻게 볼 수 있습니까?



답변

2019 년 7 월 1 일 업데이트

docker-compose logs <name-of-service>

로부터 문서 :

사용법 : 로그 [옵션] [서비스 …]

옵션 :

–no-color 단색 출력을 생성합니다.

-f, –follow 로그 출력을 따릅니다.

-t, –timestamps 타임 스탬프를 표시합니다.

–tail = “all”각 컨테이너의 로그 끝부터 표시 할 줄 수입니다.

Docker 로그보기

Docker compose를 분리 모드로 시작하고 나중에 모든 컨테이너 의 로그에 연결할 수 있습니다 . 로그 감시 마치면 서비스 종료 하지 않고 로그 출력에서 ​​분리 할 수 있습니다.

  1. 분리 모드 ( ) 에서 모든 서비스docker-compose up -d시작하는 데 사용 합니다 ( 분리 모드에서는-d 로그가 표시되지 않음).
  2. 실행중인 모든 서비스 의 로그 자신 docker-compose logs -f -t연결하는 데 사용 하지만 로그 출력을 따르고 옵션이 타임 스탬프를 제공함을 의미합니다 ( Docker 참조 참조 ).-f-t
  3. 실행중인 컨테이너를 종료 하지 않고 로그 출력에서 ​​자신 을 분리 하려면 Ctrl + z또는 Ctrl + c을 사용하십시오.

단일 컨테이너의 로그에 관심이 있다면 docker대신 키워드를 사용할 수 있습니다 .

  1. 사용하다 docker logs -t -f <name-of-service>

출력 저장

출력을 파일에 저장하려면 logs 명령에 다음을 추가합니다.

  1. docker-compose logs -f -t >> myDockerCompose.log


답변

터미널의 모든 서비스 에서 출력 로그 를 보려면 .

docker-compose logs -t -f --tail <no of lines>

예 : 모든 서비스에서 마지막 5 줄의 출력을 기록하고 싶다고 가정 해 보겠습니다.

docker-compose logs -t -f --tail 5

특정 서비스의 출력기록 하려면 다음과 같이 할 수 있습니다.

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

용법:

예 : API 및 포털 서비스가 있다고 가정하면 다음과 같이 할 수 있습니다.

docker-compose logs -t -f --tail 5 portal api

여기서 5는 두 로그의 마지막 5 줄을 나타냅니다.

참조 : https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/


답변

  1. 명령을 사용하여 분리 모드에서 컨테이너를 시작하십시오.
    docker-compose up -d
  2. 컨테이너 사용을 보려면 다음을 사용하십시오. docker ps
  3. 컨테이너에 대한 로그를 보려면 : docker logs <containerid>


답변

불행히도 우리 docker-compose logsdocker-compose run. 이 작업을 안정적으로 수행하려면 docker-compose run종료 상태 를 억제 한 다음 로그를 리디렉션하고 올바른 상태로 종료해야합니다.

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1


답변