도커

도커 자체적으로 로깅, 디버깅하는 방법

이 현호 2023. 2. 28. 11:19

리눅스 컨테이너의 미래라는 제목으로 도커 엔진을 처음 발표한 솔로몬 하익스는 docker라는 새로운 명령으로 'Hello World' 문자열을 출력하는 데모를 시연했다.

1.1 도커 허브 레지스트리에서 제공하는 busybox 이미지를 다운로드 후 이미지 조회.

docker pull busybox
docker images

 

1.2 다운로드한 이미지를 실행하면 컨테이너가 됨. 이미지 뒤에 태그가 latest이면 생략 가능.

docker run busybox
docker ps -a

 

docker run -it busybox sh
/ # uname -a

 

/ # exit

 

1.3 셸에 echo 명령을 이용해 'Hello World'를 출력해 본다.

docker run busybox echo 'Hello World'

 

2. 도커 정보 확인


도커 설치 이후 가장 먼저 확인했던 명령이 docker version이다.

2.1 도커 버전 정보만 확인

docker -v
Docker version 20.10.17, build 100c701

 

2.2 설치된 도커 엔진의 세부 정보 확인.

docker version

설치된 도커 엔진은 클라이언트와 서버로 구분된다.

  • 클라이언트: 도커 명령을 받고, 결과를 출력하는 역할을 한다.
  • 서버: 도커 엔진, 즉 도커 데몬을 이용해 컨테이너 시작, 운영, 정지 등을 담당한다.

 

시스템에 설치된 도커 구성 정보는 docker.io를 통해 확인한다.

  • 커널 정보, 현재 컨테이너 수 및 이미지 수를 출력
  • 사용 중인 스토리지 드라이버에 따른 풀 이름
  • 데이터 파일, 메타 데이터 파일, 사용된 데이터 공간, 총 데이터 공간, 사용된 메타 데이터 공간, 총 메타 데이터 공간 정보 표시

 

2. 3 docker system info를 실행해서 출력 정보를 하나씩 살펴보자

docker info

  • Containers:       # 현재 컨테이너 수.
  • Running:           # 실행 중인 컨테이너 수.
  • Paused: 0
  • Stopped:           # 정지된 컨테이너 수
  • Images:             # 다운로드된 이미지 수
  • Server Version: # 도커 엔진 버전

 

2.4 위에 출력 정보들을 JSON 파일 형식으로 출력할 수 있다.

docker info --format '{{json .}}'

 

2.5 다음은 도커 시스템이 사용하는 디스크 사용량에 대한 현재 상태를 조회할 수 있다.

리눅스 명령어의 df를 도커가 그대로 차용해서 사용한다.

docker system df

 

2.6 좀 더 세부적인 정보를 확인하려면 -v 옵션을 사용한다.

docker system df -v

 

회수 가능한 공간 확보는 docker system prune 명령을 이용하여 제거할 수 있다.

다음은 docker system events 명령이다. 도커 서버에서 발생하는 도커 관련 이벤트 정보를 표시하는 명령이다.

2.7 두 개의 터미널 창을 이용해서 어떤 정보가 출력되는지 알아보자.

터미널 1. 다음 명령을 실행하면 도커 관련 명령이 실행되지 않는 동안에는 아무것도 출력 안 됨.

docker system events

 

터미널 2. 도커를 이용해 Nginx 웹 애플리케이션을 조작해 본다.

docker run -itd -p 80:80 --name=webapp nginx

 

터미널 1. 도커 명령이 실행되면 실시간으로 이벤트 로그가 기록됨.

docker system events

 

터미널 2. 실행한 Nginx 웹 애플리케이션을 정지한다. 마찬가지로, 터미널 1에서 정지되는 컨테이너 정보가 기록되는 것을 확인할 수 있다.

docker ps

 

docker stop webapp

webapp

 

이벤트 옵션 필터를 통해 원하는 정보의 키워드를 입력하면 해당 정보만 추출해서 볼 수 있다.

도커 데몬 로그 위치

터미널 1. 'dockerd' 명령도 도커 데몬을 시작할 수 있고, 다른 작업 창에서 수행되는 모든 도커 명령에 대한 정보를 디버깅하여 화면에 출력한다.

sudo dockerd -D

 

터미널 2. 'dockerd' 명령도 도커 데몬을 시작할 수 있고, 다른 작업 창에서 수행되는 모든 도커 명령에 대한 정보를 디버깅하여 화면에 출력한다.

docker ps -a

 

정지되어 있는 컨테이너 시작.

docker start webapp

 

터미널 1,

터미널 2에서 수행하는 명령이 고스란히 dockerd 화면에 출력됨.

sudo dockerd -D

 

반응형