docker
Docker Engine 24.0+매일 쓰는 Docker CLI 명령어 빠른 참조: 컨테이너 생명주기, 이미지 빌드, 로그/exec, 네트워크, 볼륨, Compose, 레지스트리, 정리 작업 — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.
명령어 46개
컨테이너 생명주기
docker run <image>이미지로 새 컨테이너를 만들고 시작합니다.
-d 백그라운드; -it 인터랙티브 TTY; --name 이름 지정; -p host:container 포트 publish; -v 볼륨 마운트; -e KEY=VAL 환경변수; --rm 종료 시 자동 삭제; --restart=always|unless-stopped|on-failure
docker run -d --name web -p 8080:80 -v $PWD:/usr/share/nginx/html:ro nginx:alpinedocker start|stop|restart <container>기존 컨테이너(이름 또는 ID)를 시작/중지/재시작합니다.
-t N 종료 전 대기 초(기본 10)
docker restart web && docker logs --tail 50 webdocker rm <container>중지된 컨테이너 한 개 이상을 삭제합니다.
-f 실행 중 강제 삭제; -v 익명 볼륨도 함께 삭제
docker rm -f $(docker ps -aq)docker ps컨테이너 목록을 표시합니다(기본: 실행 중인 것만).
-a 모두; -q ID만; -s 크기 포함; --format go-template; --filter status|name=...
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'docker rename <c> <new>컨테이너 이름을 변경합니다.
docker rename web-1 gateway-webdocker update <c>컨테이너의 자원 제한과 재시작 정책을 런타임에 변경합니다.
--cpus N; --memory SIZE; --memory-swap SIZE; --restart policy
docker update --cpus 1.5 --memory 1g apidocker wait <c>컨테이너가 종료될 때까지 대기한 뒤 종료 코드를 출력합니다.
docker wait db && echo "db stopped"docker top <c>컨테이너 안의 실행 중인 프로세스를 보여줍니다(호스트 PID 네임스페이스의 ps).
docker top web로그 & Exec
docker logs <c>컨테이너 로그를 가져옵니다.
-f follow; --tail N; --since timestamp|duration; -t 타임스탬프 포함; --details
docker logs -f --tail 200 -t api | grep ERRORdocker exec -it <c> <cmd>실행 중인 컨테이너 안에서 명령을 실행합니다(주로 인터랙티브 셸).
-i STDIN 유지; -t pseudo-TTY 할당; -u user; -w workdir; -e KEY=VAL
docker exec -it -u postgres db psql -U postgres app_productiondocker attach <c>실행 중인 컨테이너에 로컬 STDIN/STDOUT 을 붙입니다(`docker start -i` 와 동일).
--sig-proxy 시그널 프록시; --no-stdin
docker attach web && Ctrl-p Ctrl-q to detachdocker cp <c>:<src> <dest>컨테이너와 로컬 파일 시스템 간에 파일/폴더를 복사합니다.
-L 심볼릭 링크 추적; -a 아카이브 모드
docker cp db:/var/lib/postgresql/data ./pgdata조회
docker inspect <obj>Docker 객체(container, image, volume, network)의 저수준 정보를 반환합니다.
-f go-template; --type container|image|network|volume; -s size
docker inspect -f '{{.NetworkSettings.IPAddress}}' webdocker stats실행 중인 컨테이너의 CPU/메모리/네트워크/디스크 사용량을 실시간으로 보여줍니다.
--no-stream 1회만; -a 모두(중지 포함); --format; --no-trunc
docker stats --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'docker diff <c>컨테이너 파일 시스템의 변경(추가/변경/삭제)을 확인합니다.
docker diff web | head -20이미지 작업
docker pull <image>[:tag]레지스트리에서 이미지(또는 저장소)를 가져옵니다.
-a 태그된 모든 이미지; --platform linux/amd64; -q quiet; --disable-content-trust
docker pull --platform linux/amd64 nginx:1.27-alpinedocker images로컬 데몬의 이미지 목록을 표시합니다.
-a 모두(중간 이미지 포함); -q ID만; --digests; --filter dangling=true
docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20docker build <path>Dockerfile 로 이미지를 빌드합니다.
-t name:tag; -f Dockerfile 경로; --no-cache; --build-arg KEY=VAL; --target stage; --progress=plain; --platform
docker build -t myapp:dev --build-arg NODE_ENV=development --progress=plain .docker tag <src> <dest>기존 이미지를 가리키는 태그를 만듭니다(별칭 / 푸시 대상).
docker tag myapp:dev registry.example.com/team/myapp:1.2.0docker push <image>이미지(또는 저장소)를 레지스트리로 업로드합니다.
--disable-content-trust; -a 태그된 모든 변형; --quiet
docker push registry.example.com/team/myapp:1.2.0docker rmi <image>이미지 한 개 이상을 삭제합니다.
-f 강제(자식 있을 때도 untag); --no-prune untagged 부모 유지
docker rmi -f $(docker images --filter 'dangling=true' -q)docker image prune / docker save / docker load디스크 회수(dangling/오래된 이미지 필터); 이미지를 tar 로 저장/복원.
-a 모두; --filter 'until=24h'; -o file.tar; -i file.tar
docker image prune -af --filter 'until=72h' && docker save -o nginx.tar nginx:alpinedocker history <image>이미지의 레이어 / 중간 빌드 이력을 보여줍니다.
--no-trunc; --human; -q ids
docker history --no-trunc --human myapp:dev네트워크
docker network ls네트워크 목록을 표시합니다.
--filter driver=bridge|overlay; -q ids; --format
docker network ls --filter driver=bridge --format '{{.Name}}'docker network create <name>서비스 디스커버리 & DNS 를 위한 사용자 정의 브리지 네트워크를 만듭니다.
--driver bridge|overlay|macvlan; --subnet CIDR; --gateway; --ipv6; --internal
docker network create --driver bridge --subnet 10.20.0.0/24 mynetdocker network connect|disconnect <net> <c>실행 중인 컨테이너를 네트워크에 연결/분리합니다.
--ip IPV4; --ip6 IPV6; --alias 호스트 별칭; --link container
docker network connect mynet webdocker network rm / docker network prune네트워크 한 개 이상을 삭제 / 사용하지 않는 것을 정리합니다.
-f force; --filter 'until=24h'
docker network prune -f볼륨 & 스토리지
docker volume ls볼륨 목록을 표시합니다.
--filter dangling=true|driver|name; -q ids; --format
docker volume ls --filter dangling=true -qdocker volume create <name>이름 있는 볼륨을 만듭니다(Docker 가 관리, 컨테이너 UFS 외부).
--driver local; --opt type=nfs; --opt o=addr; --opt device=:/path
docker volume create --driver local --opt type=nfs --opt o=addr=10.0.0.1 --opt device=:/exports/data pgdatadocker volume rm / docker volume prune볼륨 한 개 이상을 삭제 / 사용하지 않는 것을 정리합니다.
-f force; --filter 'label=...'
docker volume rm $(docker volume ls -q --filter dangling=true)docker volume inspect <vol>볼륨의 저수준 상세(마운트 포인트, 드라이버, 옵션)를 보여줍니다.
docker volume inspect pgdata --format '{{.Mountpoint}}'Docker Compose
docker compose up필요 시 빌드 후 compose.yaml 의 서비스를 만들고 시작합니다.
-d 백그라운드; --build 강제 빌드; --force-recreate; --pull always|missing|never; -f file
docker compose -f compose.prod.yaml up -d --pull alwaysdocker compose down컨테이너와 네트워크를 멈추고 삭제; 기본은 익명 볼륨도 함께 삭제합니다.
--volumes 이름 있는 볼륨도; --rmi all|local; --remove-orphans; -t N 타임아웃
docker compose down --rmi local --remove-orphansdocker compose ps / logsCompose 서비스 목록 / 로그 조회.
ps -q ID만; logs -f follow; --tail N; --since
docker compose ps --format json | jq '.[] | {Name, State}' && docker compose logs -f --tail 100 apidocker compose exec / run실행 중 / 새 서비스 컨테이너에서 명령을 실행합니다.
exec --user; exec -e VAR=val; run --rm 실행 후 컨테이너 삭제
docker compose exec db psql -U postgres app && docker compose run --rm api npm run migratedocker compose build / pull / pushCompose 프로젝트의 이미지 빌드 / 레지스트리에서 pull / 레지스트리로 push.
--no-cache; --pull; --quiet; --parallel
docker compose build --no-cache api workerdocker compose restart / stop / start / scale서비스 생명주기 단축 명령; scale 은 replica 수를 조정합니다.
restart <svc>; stop <svc>; start <svc>; scale api=4 worker=2
docker compose restart api && docker compose up -d --scale worker=4레지스트리 & Hub
docker login [server]레지스트리에 인증합니다. `docker login` 은 Docker Hub 용.
-u user; -p password; --password-stdin
echo "$REGISTRY_TOKEN" | docker login ghcr.io -u myuser --password-stdindocker logout [server]설정에서 해당 레지스트리의 인증 정보를 제거합니다.
docker logout && docker info 2>/dev/null | headdocker search <term>Docker Hub 에서 이미지를 검색합니다.
--filter stars=N; --limit N; --format
docker search --filter stars=100 --limit 5 postgres시스템 & 정리
docker system dfDocker 디스크 사용량(이미지, 컨테이너, 볼륨, 빌드 캐시)을 보여줍니다.
-v verbose
docker system df -v | sort -k7 -h | taildocker system prune중지된 컨테이너, dangling 이미지, 사용하지 않는 네트워크를 모두 삭제합니다.
-a 모든 이미지; --volumes 볼륨도; --filter 'until=24h'; -f force
docker system prune -af --volumes --filter 'until=72h'docker builder prune빌드 캐시를 정리합니다(오래된 레이어의 디스크 확보).
-af; --filter 'until=72h'; --keep-storage SIZE
docker builder prune -af --filter 'until=72h'docker context ls / use다중 호스트/다중 데몬용 Docker context 관리(SSH 원격 context 포함).
ls --format json; use myctx
docker context create myhost --docker host=ssh://user@server && docker context use myhost && docker psdocker info시스템 전역 정보를 표시합니다. 디버깅할 때 유용합니다.
--format
docker info -f '{{.DriverStatus}}'docker port <c>컨테이너의 포트 매핑(호스트 ↔ 컨테이너) 목록을 보여줍니다.
docker port web 80관련 명령어 치트시트
aws cli
AWS Command Line Interface 빠른 참조 — 자격 증명 설정, IAM 신원, EC2 / Lambda / S3 / DynamoDB / IAM, 프로파일, SSO, 페이징 / 출력 형식 — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.
명령어 40개
AWS CLI v2
azure cli
Azure CLI(az) 빠른 참조 — 인증, subscription / resource 관리, VM / AKS / Storage / App Service / Key Vault, 쿼리 형식, CI 친화적 워크플로우 — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.
명령어 43개
Azure CLI 2.60+
gcloud
gcloud(Google Cloud CLI), gsutil, bq 명령어 빠른 참조 — 인증, 프로젝트 / IAM, Compute / GKE / BigQuery / Cloud Storage, 설정, Cloud Build / Deploy — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.
명령어 48개
gcloud 480+
kubectl
Kubernetes CLI 클라이언트 kubectl 의 빠른 참조: context, get/describe, apply, logs/exec, rollout, 스케일링과 디버깅 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.
명령어 40개
kubectl 1.28+
상표 및 사용 안내
본 명령줄 도구 치트시트 모음은 오픈 커뮤니티 참고 자료입니다. 본 문서에서 언급되는 도구의 명칭, 로고, 상표(예: Git™, Docker™, Kubernetes®, kubectl, PostgreSQL®, MySQL®, Redis™, MongoDB®, Linux™, PowerShell™, Vim™ 등)는 각 권리자의 자산이며, 본 문서에서는 식별 및 참고 목적のみで 사용됩니다.
본 치트시트의 모든 내용은 독립적으로 작성된 단순화된 자체 완결형 참고 자료이며, 어떠한 공식 문서와도 계열·인정·출처 관계가 없습니다. 명령 목록, 플래그 설명, 예제는 모두 저자의 원본 단순화이며, 권위 있는 정보가 필요한 경우 각 도구의 공식 문서를 참조하시기 바랍니다.
명령 구문 및 옵션 플래그는 도구 버전에 따라 다를 수 있습니다. 표시되는 버전 태그는 안정 릴리스를 반영하며, 다른 버전에서는 동작이 다를 수 있습니다. 본 치트시트는 상표권자의 어떠한 선호나 권장도 의미하지 않습니다.
상표권자 또는 저작권자가 사이트의 일부 내용에 대해 권리 침해가 있다고 판단하시는 경우 [email protected]으로 이메일을 보내 주십시오. 유효한 권리 증명을 받은 후 합리적인 기간 내에 관련 내용을 수정하거나 삭제하겠습니다.
본 사이트는 사이트 정보의 이용으로 인해 발생하는 어떠한 직접적 또는 간접적 손해에 대해서도 법적 책임을 지지 않습니다.
Docker 소개
Docker는 Solomon Hykes가 PyCon 2013에서 처음 공개한 오픈 소스 컨테이너 엔진으로, 현재 Docker Inc.와 Cloud Native Computing Foundation이 공동으로 관리하고 있습니다. 현재 안정 버전은 Docker Engine 24.0+(런타임 컴포넌트)이며, `dockerd`가 OCI 호환 이미지를 기반으로 빌드된 컨테이너를 오케스트레이션합니다. 컨테이너는 애플리케이션과 그 의존성(라이브러리, 설정, 런타임)을 읽기 전용 베이스 위에 레이어로 쌓은 이미지로 패키징합니다. 레이어는 SHA-256으로 콘텐츠 주소되며, 빌드 간 캐시되고 실행 중인 컨테이너 간 공유됩니다. Docker CLI는 전체 라이프사이클 — `docker build`, `docker run`, `docker ps`, `docker exec`, `docker logs`, `docker compose`(다중 컨테이너 앱), `docker network` / `docker volume`(네트워크와 볼륨), `docker push` / `docker pull`(레지스트리) — 을 포괄하며, Kubernetes 클러스터에서도 컨테이너 작업의 공용어가 됩니다. 로컬에서 운영 환경을 미러링하거나, CI에서 재현 가능한 작업을 돌리거나, Compose 스택을 구성할 때 Docker를 사용하고, 자동 스케줄링·자가 치유·다중 노드 롤링 배포가 필요할 때 Kubernetes로 가세요. Docker 데몬은 기본적으로 로컬 소켓에 바인드되므로 TLS로 보호하고, 절대 인터넷에 노출하지 마세요.
치트시트 버전 1.0.0