나는 모든 일에 lazydocker를 사용한다 — 단, 사용하지 않을 때는 제외.

발행: (2026년 5월 29일 PM 04:36 GMT+9)
9 분 소요
원문: Dev.to

dockervis – 최소 Docker 대시보드

저는 lazydocker를 정말 좋아합니다. 솔직히 말해서, Jesse Duffield가 만든 것은 특별합니다 — 새 머신을 세팅할 때 가장 먼저 설치하는 도구이죠. 하지만 90 %의 경우 열어보면 단지 컨테이너가 정상인지 확인하고 싶을 뿐입니다. 이미지 레이어를 살펴보거나, compose 설정을 스크롤하거나, 볼륨 마운트를 파고들 필요가 없습니다. 단순히 현재 상태만 보고 싶을 때가 많죠.

때때로 lazydocker는 대시보드만 필요할 때 제어실을 여는 느낌입니다.

그래서 저는 dockervis 를 만들었습니다 — 터미널 대시보드로, 한 가지 일을 합니다: 현재 Docker 컨테이너가 무엇을 하고 있는지 보여주고, 단 한 번의 키 입력으로 조작할 수 있게 해줍니다.


해결하고자 했던 문제

보통 제 워크플로는 다음과 같습니다:

  1. docker compose 로 4‑5개의 컨테이너를 시작한다.
  2. 뭔가 이상함을 느낌 — API가 느리거나, cron 작업이 크래시했을 수도 있다.
  3. 터미널을 열고 docker ps 를 입력해, 잘려 나온 출력을 눈여겨본다.
    컨테이너 ID를 복사하고 docker stats --no-stream 을 실행한다.
  4. 잘못된 컨테이너였다는 것을 깨닫는다.
  5. 다시 반복한다.

docker stats는 폭포수 같은 출력이고, docker ps는 리소스 사용량을 보여주지 않습니다. 두 명령을 오가며 디버깅하면 새벽 2시에도 금방 지칩니다.

lazydocker가 이 문제를 해결해 주지만, 동시에 모든 이미지, 모든 볼륨, 모든 compose 파일까지 보여줍니다 — 저는 단지 내 애플리케이션 컨테이너가 다시 RAM을 다 먹고 있는지만 알고 싶을 뿐입니다.


dockervis가 하는 일

npm install -g dockervis
dockervis

도구가 전체 화면 모드로 실행됩니다 (q 로 종료).
대시보드 화면은 다음과 같습니다:

┌─────────────────────────────────────────────────────────────┐
│ dockervis - Docker Container Dashboard                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ● app (running)           CPU: 1.2%                        │
│ ● db (running)            Memory: 256 MB / 512 MB (50.0%) │
│ ○ web (exited)            Network RX: 1.2 GB               │
│ ● redis (running)         Network TX: 512 MB               │
│                                                             │
└─────────────────────────────────────────────────────────────┘
q: Quit | r: Refresh | s: Stop | R: Restart | d: Delete

모든 컨테이너와 그 상태, CPU, 메모리, 네트워크 사용량이 실시간으로 업데이트됩니다. 마우스도 필요 없고, 패널을 이동할 필요도 없습니다 — 오직 여러분이 신경 쓰는 정보만 보여줍니다.


실제로 중요한 키보드 단축키

동작
j / 아래로 이동
k / 위로 이동
s컨테이너 정지
R컨테이너 재시작
d삭제 (종료된 경우에만)
r강제 새로 고침
q종료

Vim 스타일 네비게이션은, 글쎄요, 근육 기억이 있기 때문이죠.

전형적인 흐름:
문제가 걸렸을 때: j → 선택 → R → 재시작 → 완료.
컨테이너가 종료됐고 제거하고 싶을 때: k/j → 선택 → d.


컨테이너가 너무 많을 때 필터링

제 업무용 머신에는 약 20개의 컨테이너가 있습니다. 오래된 프로젝트에서 남은 것이 많죠. 모두 볼 필요는 없습니다.

# 실행 중인 것만 표시
dockervis --filter running

# 특정 서비스만 집중
dockervis --include app,db,redis

# 잡음 제거
dockervis --exclude test,ci

--exclude 플래그가 가장 마음에 듭니다 — 절대 건드리지 않는 테스트 컨테이너를 없애서 대시보드가 실제로 유용해지거든요.


메트릭 내보내기 (증거가 필요할 때)

때때로 “이 컨테이너가 3일 동안 CPU 80 %를 사용하고 있다”는 걸 누군가에게 보여줘야 할 때가 있습니다. 혹은 시간에 따라 메트릭을 기록하고 싶을 때도요.

# JSON 내보내기
dockervis --export metrics.json

# 스프레드시트에 넣고 싶다면 CSV
dockervis --export metrics.csv --export-format csv

CI 파이프라인에서 사용합니다: 한 번 실행하고 JSON으로 덤프한 뒤 jq 로 파싱해 헬스‑체크 스크립트에 활용합니다. 화려하진 않지만 충분히 동작합니다.


왜 TypeScript인가 (다른 사람들처럼 Go는 안 쓰는 이유)

대부분의 터미널 Docker 도구는 Go로 작성됩니다 — lazydocker, ctop, docui 등. Go가 나쁘진 않지만 저는 하루 종일 TypeScript를 다룹니다. 뭔가 고치거나 기능을 추가하고 싶을 때 가장 빠른 언어가 바로 TypeScript이기 때문이죠.

dockervis가 사용하는 주요 라이브러리:

  • dockerode – 검증된 Docker API 클라이언트.
  • blessed – 터미널 UI 라이브러리 (lazydocker가 tview/bubbletea 계열을 쓰는 것과 동일).

덕분에 TypeScript/Node 개발자라면 새로운 언어를 배우지 않아도 직접 기여할 수 있습니다. 설치는 npm install -g 로 끝나고, Go 툴체인은 전혀 필요 없습니다.


그래도 lazydocker를 쓰게 되는 경우

dockervis가 lazydocker를 완전히 대체하는 건 아닙니다. 저는 다음과 같은 상황에서 여전히 lazydocker를 사용합니다:

  • Docker Compose 설정 파일 탐색
  • 이미지 레이어 검사
  • 볼륨 및 네트워크 관리
  • 컨테이너 로그 상세 조회

5초 안에 “모두 정상인가?”를 확인하거나 “그 컨테이너 하나 빨리 재시작”할 때는 dockervis가 더 빠르고 조용합니다.


빠른 설치

# 설치
npm install -g dockervis

# Docker 소켓 접근 권한 확인
sudo usermod -aG docker $USER   # (로그아웃 후 다시 로그인)

# 실행
dockervis

선택적 설정

새로 고침 간격 변경 (기본 2 초):

dockervis --interval 5000   # 5 초

원격 Docker 호스트에 연결:

DOCKER_HOST=tcp://192.168.1.100:2375 dockervis

코드

오픈 소스이며 MIT 라이선스를 따릅니다: github.com/sulthonzh/dockervis

이슈와 PR을 언제든 환영합니다. 저는 주로 macOS + Docker Desktop 환경에서 테스트했으며, Linux와 Windows에서의 사용 후기 특히 환영합니다.

도움이 될 거예요.

* 개발자 도구를 만드는 것이 제 전문입니다.  
  다른 프로젝트는 [github.com/sulthonzh](https://github.com/sulthonzh) 에서 확인하세요.
0 조회
Back to Blog

관련 글

더 보기 »