[docker] docker-compose run을 사용하여 로그 출력을 보는 방법은 무엇입니까?
사용할 때 docker-compose up
내 docker-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를 분리 모드로 시작하고 나중에 모든 컨테이너 의 로그에 연결할 수 있습니다 . 로그 감시 를 마치면 서비스 를 종료 하지 않고 로그 출력에서 분리 할 수 있습니다.
- 분리 모드 ( ) 에서 모든 서비스
docker-compose up -d
를 시작하는 데 사용 합니다 ( 분리 모드에서는-d
로그가 표시되지 않음). - 실행중인 모든 서비스 의 로그 에 자신
docker-compose logs -f -t
을 연결하는 데 사용 하지만 로그 출력을 따르고 옵션이 타임 스탬프를 제공함을 의미합니다 ( Docker 참조 참조 ).-f
-t
- 실행중인 컨테이너를 종료 하지 않고 로그 출력에서 자신 을 분리 하려면
Ctrl + z
또는Ctrl + c
을 사용하십시오.
단일 컨테이너의 로그에 관심이 있다면 docker
대신 키워드를 사용할 수 있습니다 .
- 사용하다
docker logs -t -f <name-of-service>
출력 저장
출력을 파일에 저장하려면 logs 명령에 다음을 추가합니다.
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/
답변
- 명령을 사용하여 분리 모드에서 컨테이너를 시작하십시오.
docker-compose up -d
- 컨테이너 사용을 보려면 다음을 사용하십시오.
docker ps
- 컨테이너에 대한 로그를 보려면 :
docker logs <containerid>
답변
불행히도 우리 docker-compose logs
는 docker-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