1. 도커 데몬 디버그 모드
도커 데몬에서 어떤 일이 일어나고 있는지 가장 확실하고 정확하게, 그리고 자세하게 알아내는 방법은 도커 데몬을 디버그 옵션으로 실행하는 것입니다.
# dockerd -D
도커를 서비스로서 구동했을 때는 위와 같은 출력내용이 없기 때문에 로그파일에서 확인 가능합니다.
/var/log/upstart/docker.log 나 journalctl -u docker 명령으로 확인할 수 있습니다.
하지만 디버그 모드는 원하지 않는 정보까지 너무 많이 출력되며, 포그라운드 상태로 실행해야 한다는 단점이 있습니다.
2. events, stats, system df 명령어
[root@localhost ~]# docker events
[root@localhost ~]# docker system events
위 명령어 중 하나를 입력하면 도커 데몬이 수행한 명령어의 결과를 실시간으로 볼 수 있습니다.
그러나 도커 클라이언트에서 입력하는 모든 명령어가 출력되는 것은 아닙니다.
[root@localhost ~]# docker events --filter 'type=image'
events 명령어는 filter 옵션을 통해 원하는 정보만 출력하도록 설정할 수 있습니다.
(container, image, volume, network, plugin, daemon)
위 처럼 image로 설정하였다면 docker pull, push 등 이미지에 관련된 명령어에 해당하는 결과만 출력될 것 입니다.
[root@localhost ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
docker stats 명령어는 실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력합니다.
스트림이 아닌 한번만 출력하는 방식으로 사용하고 싶다면 --no-stream 옵션을 추가합니다.
[root@localhost ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 21 1 2.374GB 2.374GB (100%)
Containers 1 0 6B 6B (100%)
Local Volumes 22 0 2.276GB 2.276GB (100%)
Build Cache 0 0 0B 0B
system df 명령어는 도커에서 사용하고 있는 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용중인 개수, 크기, 삭제함으로써 확보 가능한 공간을 출력합니다.
위 결과에선 총 이미지가 21개이고 사용중인것은 1개이며 이미지가 차지하는 공간은 2.374GB임을 확인할 수 있습니다.
RECLAIMABLE은 사용하지 않는 것을 삭제함으로써 확보할 수 있는 공간을 의미합니다.
사용 중이지 않은 컨테이너와 볼륨은 각각 다음 명령어로 한꺼번에 삭제 가능합니다.
docker container prune
docker volume prune
또한 docker image prune 명령어 사용하면 사용 중이지 않는 댕글링 이미지를 삭제합니다.
(댕글링 이미지는 docker image에서 <none>:<none>인 이미지를 뜻합니다.)
3. CAdvisor
CAdvisor는 구글이 만든 컨테이너 모니터링 도구입니다.
컨테이너로서 간단하게 설치 가능하며 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 등을 시각화합니다.
CAdvisor는 오픈소스로서 깃허브에서 소스코드로 사용할 수 있으며 도커허브에서 이미지로도 배포되고 있습니다.
[root@localhost ~]# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
44a45bb65cdf: Pull complete
0bbe1a2fe2a6: Pull complete
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest
020732e375cb2cc763f998a679dc185eae7ce8d29489cea42dd58129fc43e46e
이후 도커 호스트 IP:8080 으로 웹 브라우저 접속을 해 봅니다.
접속하면 위와같은 화면을 확인할 수 있습니다.
위 대시보드는 60초간의 모니터링 정보만 보여줍니다.
하지만 InfluxDB나 prometheus 등과 같이 사용하면 장기간의 모니터링 정보를 수집하고 분석할 수 있습니다.
그러나 CAdvisor는 단일 도커 호스트만을 모니터링할 수 있다는 한계가 있습니다.
여러 개의 호스트로 도커를 사용하고 있으며 이를 기반으로 PaaS 같은 도커 클러스터를 구축했다면 단일 CAdvisor 컨테이너는 용도에 맞지 않을 수 있습니다.
이를 위해 보통 쿠버네티스나 스웜모드 등과 같은 오케스트레이션 툴을 설치한 뒤에 프로메테우스, InfluxDB 등을 이용해 여러 호스트의 데이터를 수집하는 것이 일반적입니다.
4. Remote API 라이브러리를 이용한 도커 사용
테스트 실패,, 이후 다시 업데이트 예정
'docker' 카테고리의 다른 글
도커 컨테이너 다루기(12) - 도커데몬[3] (0) | 2021.06.08 |
---|---|
도커 컨테이너 다루기(11) - 도커데몬[2] (0) | 2021.06.08 |
도커 컨테이너 다루기(10) - 도커데몬[1] (0) | 2021.06.05 |
도커 컨테이너 다루기(9) - Dockerfile로 빌드할 때 주의할 점 (0) | 2021.06.04 |
도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[2] (1) | 2021.06.03 |