Docker CLI 완전 가이드 — 명령어 체계 총정리

Docker CLI의 Management Commands 체계, 주요 명령어 카테고리, --format과 --filter 활용법, 환경 변수와 alias까지 CLI를 제대로 쓰는 법을 정리합니다.

· 5 min read · PALDYN Team

지난 글에서 dockerd의 내부 구조를 살펴봤습니다. 이제 실제로 Docker를 사용하는 인터페이스, CLI를 체계적으로 이해할 차례입니다. 수십 가지 명령어가 있지만, 구조를 파악하면 외울 필요 없이 필요한 명령을 스스로 찾을 수 있습니다.

CLI 명령어 체계: Management Commands

Docker 1.13(2017)부터 Management Commands 체계가 도입됐습니다. 명령어를 대상 리소스 타입 기준으로 분류합니다.

docker <object> <action>

# 예시
docker container ls        # 컨테이너 목록
docker image pull nginx    # 이미지 다운로드
docker volume create mydb  # 볼륨 생성
docker network inspect br0 # 네트워크 상세 정보

기존 단축 명령어(docker ps, docker images)도 여전히 작동합니다. docker container lsdocker ps는 완전히 동일합니다. Management Commands 형식이 더 명시적이고 자동완성이 잘 됩니다.

Docker CLI 명령어 카테고리

자주 쓰는 명령어 빠른 참조

컨테이너

# 실행 (백그라운드, 이름 지정, 포트 매핑)
docker run -d --name web -p 80:80 nginx

# 실행 중 컨테이너 목록
docker ps

# 모든 컨테이너 (중지 포함)
docker ps -a

# 컨테이너 로그 (실시간)
docker logs -f web

# 컨테이너 내부 셸 진입
docker exec -it web bash

# 중지 / 시작 / 재시작 / 삭제
docker stop web && docker rm web

이미지

# 이미지 다운로드
docker pull ubuntu:22.04

# 로컬 이미지 목록
docker images

# 이미지 빌드
docker build -t myapp:1.0 .

# 이미지 삭제
docker rmi myapp:1.0

정리

# 중지된 컨테이너, 미사용 이미지, 네트워크, 볼륨 일괄 삭제
docker system prune -a --volumes

# 디스크 사용량 확인
docker system df

—help 계층 활용

CLI에서 모르는 게 있으면 --help를 붙이는 습관이 가장 중요합니다.

docker --help              # 전체 명령어 목록
docker container --help    # container 하위 명령 목록
docker run --help          # run 플래그 전체 목록

—format 플래그: Go template 출력

docker ps, docker inspect, docker images 등에 --format으로 출력 형식을 제어할 수 있습니다.

# 이름과 상태만 테이블 형식으로
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# ID만 추출 (스크립트에서 유용)
docker ps -q

# 이미지 이름과 크기
docker images --format "{{.Repository}}:{{.Tag}}\t{{.Size}}"

—filter 플래그

# 상태로 필터
docker ps --filter "status=exited"

# 이름으로 필터
docker ps --filter "name=web"

# 이미지로 필터
docker ps --filter "ancestor=nginx"

# 라벨로 필터
docker ps --filter "label=env=production"

inspect + jq: 가장 강력한 진단 조합

docker inspect는 컨테이너/이미지/네트워크/볼륨 등의 상세 정보를 JSON으로 출력합니다.

# 컨테이너 IP 주소 추출
docker inspect web | jq '.[0].NetworkSettings.IPAddress'

# 마운트된 볼륨 목록
docker inspect web | jq '.[0].Mounts'

# 환경 변수 목록
docker inspect web | jq '.[0].Config.Env'

# --format으로 jq 없이 동일하게
docker inspect --format '{{.NetworkSettings.IPAddress}}' web

Docker CLI 필수 사용법

환경 변수와 alias

자주 쓰는 옵션은 환경 변수나 alias로 등록해 두면 생산성이 크게 높아집니다.

# ~/.bashrc 또는 ~/.zshrc에 추가
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlog='docker logs --tail=50 -f'
alias dex='docker exec -it'
alias dip='docker inspect --format "{{.NetworkSettings.IPAddress}}"'

# 원격 Docker 호스트 연결
export DOCKER_HOST=ssh://user@remote-host

자동완성 설정

Docker CLI는 bash/zsh/fish 자동완성을 제공합니다.

# zsh (oh-my-zsh 사용 시 plugins에 docker 추가)
plugins=(docker docker-compose git)

# bash
source /usr/share/bash-completion/completions/docker

자동완성이 있으면 컨테이너 이름, 이미지 이름, 플래그를 Tab으로 완성할 수 있어 오타가 크게 줄어듭니다.

정리

Docker CLI는 docker <object> <action> 구조의 Management Commands 체계를 가집니다. --help로 언제든 사용법을 확인할 수 있고, --format--filter로 출력을 제어하며, docker inspect + jq로 깊은 진단이 가능합니다. 다음 글에서는 Docker를 실제 시스템에 설치하는 방법을 Linux, macOS, Windows 각각에서 다룹니다.


지난 글: Docker 엔진과 데몬 — dockerd 내부 동작

다음 글: Docker 설치 완전 가이드 — Linux · macOS · Windows


읽어주셔서 감사합니다. 😊