티스토리 뷰
- 컨테이너 내부에서 어떤 일이 일어나는지 아는 것은 디버깅뿐만 아니라 운영 측면에서도 중요합니다.
- 애플리케이션 레벨에서 로그가 기록되도록 개발해 별도의 로깅 서비스를 쓸 수도 있지만 도커 컨테이너의
표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 확인하는 명령어를 제공합니다.
[mysql 5.7이 설치된 컨테이너 생성 및 로그 남기기]
# docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:5.7
- mysql과 같은 애플리케이션을 구동하는 컨테이너는 포그라운드 모드로 실행되므로 -d 옵션을 써서 백그라운드 모드로 컨테이너를 생성하는 경우가 많습니다.
- 애플리케이션이 잘 구동되는지 여부를 알 수 없지만 docker logs 명령어를 써서 컨테이너의 표준 출력을 확인함으로써 애플리케이션의 상태를 알 수 있습니다.
- docker logs 명령어는 컨테이너 내부에서 출력을 보여주는 명령어입니다.
[mysql 5.7이 설치된 컨테이너 생성 및 로그 남기기]
# docker logs mysql
[-e 옵션을 제외 후, mysql 5.7 컨테이너 생성]
# docker run -d --name no_passwd_mysql \
mysql:5.7
- 위 명령어를 실행한 뒤 docker ps 명령어로 컨테이너의 목록을 확인하면 no_passwd_mysql 컨테이너는 생성됐으나 실행되지 않았습니다.
- docker start 명령어로 다시 시작해도 컨테이너는 시작되지 않습니다.
[docker logs 명령어를 통해 애플리케이션 문제 확인]
# docker logs no_passwd_mysql
- 실행되지 않는 no_passwd_mysql 컨테이너의 문제를 확인하기 위해 docker logs [컨테이너명] 명령어 사용합니다.
- 위의 경우는 mysql 실행에 필요한 환경변수를 지정하지 않아 컨테이너가 시작하지 않았습니다.
- docker logs 명령어를 쓰면 간단하고 빠르게 에러를 확인할 수 있습니다.
# docker logs --tail 2 no_passwd_mysql
- 컨테이너의 로그가 너무 많아 읽기 힘들다면 --tail 옵션을 써서 마지막 로그 줄부터 출력할 줄의 수를 설정할 수 있습니다.
# date +%s // 유닉스시간 확인
# docker logs --since [유닉스시간] no_passwd_mysql
- '--since' 옵션에 유닉스 시간을 입력해 특정 시간 이후의 로그를 확인할 수 있습니다.
# docker logs -f -t no_passwd_mysql
- '-t' 옵션으로 타임스탬프를 표시할 수도 있습니다.
- 컨테이너에서 실시간으로 출려괴는 내용을 확인하려면 -f 옵션을 써서 로그를 스트림으로 확인할 수 있습니다.
- 특히 -f 옵션은 애플리케이션을 개발할 때 유용합니다.
# docker run -i -t --name logtest ubuntu:14.04
# echo test! // 컨테이너
#docker logs logtest
- 기본적으로 위와 같은 컨테이너 로그는 JSON 형태로 도커 내부에 저장- 컨테이너 내부에서 어떤 일이 일어나는지 아는 것은 디버깅뿐만 아니라 운영 측면에서도 중요합니다.
- 애플리케이션 레벨에서 로그가 기록되도록 개발해 별도의 로깅 서비스를 쓸 수도 있지만 도커 컨테이너의
표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 확인하는 명령어를 제공합니다.
[mysql 5.7이 설치된 컨테이너 생성 및 로그 남기기]
# docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:5.7
- mysql과 같은 애플리케이션을 구동하는 컨테이너는 포그라운드 모드로 실행되므로 -d 옵션을 써서 백그라운드 모드로 컨테이너를 생성하는 경우가 많습니다.
- 애플리케이션이 잘 구동되는지 여부를 알 수 없지만 docker logs 명령어를 써서 컨테이너의 표준 출력을 확인함으로써 애플리케이션의 상태를 알 수 있습니다.
- docker logs 명령어는 컨테이너 내부에서 출력을 보여주는 명령어입니다.
[mysql 5.7이 설치된 컨테이너 생성 및 로그 남기기]
# docker logs mysql
[-e 옵션을 제외 후, mysql 5.7 컨테이너 생성]
# docker run -d --name no_passwd_mysql \
mysql:5.7
- 위 명령어를 실행한 뒤 docker ps 명령어로 컨테이너의 목록을 확인하면 no_passwd_mysql 컨테이너는 생성됐으나 실행되지 않았습니다.
- docker start 명령어로 다시 시작해도 컨테이너는 시작되지 않습니다.
[docker logs 명령어를 통해 애플리케이션 문제 확인]
# docker logs no_passwd_mysql
- 실행되지 않는 no_passwd_mysql 컨테이너의 문제를 확인하기 위해 docker logs [컨테이너명] 명령어 사용합니다.
- 위의 경우는 mysql 실행에 필요한 환경변수를 지정하지 않아 컨테이너가 시작하지 않았습니다.
- docker logs 명령어를 쓰면 간단하고 빠르게 에러를 확인할 수 있습니다.
# docker logs --tail 2 no_passwd_mysql
- 컨테이너의 로그가 너무 많아 읽기 힘들다면 --tail 옵션을 써서 마지막 로그 줄부터 출력할 줄의 수를 설정할 수 있습니다.
# date +%s // 유닉스시간 확인
# docker logs --since [유닉스시간] no_passwd_mysql
- '--since' 옵션에 유닉스 시간을 입력해 특정 시간 이후의 로그를 확인할 수 있습니다.
# docker logs -f -t no_passwd_mysql
- '-t' 옵션으로 타임스탬프를 표시할 수도 있습니다.
- 컨테이너에서 실시간으로 출력되는 내용을 확인하려면 -f 옵션을 써서 로그를 스트림으로 확인할 수 있습니다.
- 특히 -f 옵션은 애플리케이션을 개발할 때 유용합니다.
# docker run -i -t --name logtest ubuntu:14.04
# echo test! // 컨테이너
#docker logs logtest
- docker logs 명령어는 run 명령어에서 -i, -t 옵션을 설정해 docker attach 명령어를 사용할 수 있는 컨테이너에도 쓸 수 있으며, 컨테이너 내부에서 bash 셸 등 입출력한 내용을 확인할 수 있습니다.
[JSON 형태의 Log 파일 저장소 위치]
# ls /var/lib/docker/containers/
# cat /var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-json.log
- 위와 같은 컨테이너 로그는 JSON 형태로 도커 내부에 저장됩니다.
- 이 파일은 /var/lib/docker/containers/ 경로에 컨테이너의 ID로 시작하는 파일명으로 저장됩니다.
[컨테이너 로그 파일 크기, 갯수 제한 옵션]
# docker run -it \
--log-opt max-size=10k --log-out max-file=3 \
--name log-test ubuntu:14.04
- 컨테이너 내부의 출력이 너무 많은 상태로 방치하면 json 파일의 크기가 계속해서 커질 수 있으며, 결국 호스트의 남은 저장 공간을 전부 사용할 수도 있습니다.
- 이러한 상황을 방지하기 위해 --log-opt 옵션으로 컨테이너 json 로그 파일의 최대 크기를 지정할 수 있습니다.
- max-size는 로그 파일의 최대 크기, max-file은 로그파일의 개수를 의미합니다.
'Container & K8S & Automation > Docker' 카테고리의 다른 글
06. 도커 네트워크 (Docker Network) (2) | 2021.03.30 |
---|---|
05. Docker 볼륨 (0) | 2021.03.29 |
04. Docker 컨테이너 애플리케이션 구축 테스트 (0) | 2021.03.24 |
03. Docker 포트 바인딩 (0) | 2021.03.24 |
02. Docker 명령어 [Ubuntu 20.04] (0) | 2021.03.23 |
- Total
- Today
- Yesterday
- Docker 바인딩
- 도커 포트
- 쿠버네티스 설치
- Docker Port
- kubespray
- 도커 설치
- 쿠버네티스 종류
- docker create
- docker pull
- CKA 취득후기
- 도커 볼륨
- 도커 포트 바인딩
- 쿠버네티스란
- docker 명령어
- docker
- 도커 volume
- 도커
- 쿠버네티스 설치 종류
- kubeadm
- docker network
- docker 설치
- k8s란
- CKA 시험
- 도커 네트워크
- docker 볼륨
- docker run
- 쿠버네티스 설치 방법
- docker volume
- docker command
- 쿠버네티스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |