Docker 명령어 치트시트
이미지부터 Compose까지 9개 그룹과 실행 예시
명령어 92개
docker images이미지로컬 이미지와 크기 목록
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"docker pull nginx:alpine이미지이미지 내려받기, 태그 생략 시 latest
docker pull nginx:1.27-alpine
docker build -t app:1.0 .이미지현재 디렉터리 Dockerfile로 이미지 빌드
docker build -t registry.example.com/app:1.0 .
docker build --no-cache -t app:1.0 .이미지캐시 없이 재빌드, 캐시로 인한 이상 동작 확인
docker build --no-cache -t app:1.0 .
docker build -f Dockerfile.prod .이미지기본이 아닌 이름의 Dockerfile 지정
docker build -f docker/Dockerfile.prod -t app:prod .
docker build --target builder -t app:debug .이미지특정 스테이지까지만 빌드, 멀티스테이지 디버깅에 유용
docker build --target builder -t app:debug .
docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 .이미지한 번에 멀티 아키텍처 이미지 빌드
docker buildx build --platform linux/amd64,linux/arm64 --push -t app:1.0 .
docker tag app:1.0 registry.example.com/app:1.0이미지푸시 전 저장소 주소로 태그 지정
docker tag app:1.0 registry.example.com/team/app:1.0
docker rmi <image>이미지이미지 삭제, 컨테이너가 쓰면 먼저 삭제 필요
docker rmi app:1.0
docker history <image>이미지이미지 레이어와 크기 확인
docker history --no-trunc app:1.0
docker save -o app.tar app:1.0이미지이미지를 tar로 내보내 오프라인 전송
docker save -o app.tar app:1.0
docker load -i app.tar이미지tar 파일에서 이미지 불러오기
docker load -i app.tar
docker inspect <image>이미지이미지 메타데이터 확인: 환경변수, 엔트리포인트, 포트
docker inspect --format "{{.Config.Env}}" nginxdocker run -d --name web -p 8080:80 nginx컨테이너 수명 주기백그라운드 실행과 포트 매핑, 가장 흔한 형태
docker run -d --name web -p 8080:80 nginx:alpine
docker run -it --rm alpine sh컨테이너 수명 주기일회용 대화형 컨테이너, 종료 시 자동 삭제
docker run -it --rm alpine sh
docker run -v pgdata:/var/lib/postgresql/data postgres컨테이너 수명 주기명명 볼륨 마운트, 컨테이너 삭제 후에도 데이터 유지
docker run -d --name pg -v pgdata:/var/lib/postgresql/data postgres:16
docker run -e TZ=Asia/Shanghai -e ENV=prod app:1.0컨테이너 수명 주기환경변수 전달, 시간대 문제는 대개 여기서 시작
docker run -d -e TZ=Asia/Shanghai -e SPRING_PROFILES_ACTIVE=prod app:1.0
docker run --network host nginx컨테이너 수명 주기호스트 네트워크 직접 사용, 포트 매핑 없음
docker run -d --network host nginx
docker run --restart unless-stopped -d app:1.0컨테이너 수명 주기재시작 정책 설정, 재부팅 후 자동 기동
docker run -d --restart unless-stopped app:1.0
docker run --memory 512m --cpus 1.5 app:1.0컨테이너 수명 주기메모리와 CPU 제한, 컨테이너가 호스트를 잡아먹는 것 방지
docker run -d --memory 512m --cpus 1.5 app:1.0
docker ps컨테이너 수명 주기실행 중인 컨테이너만 표시
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"docker ps -a컨테이너 수명 주기종료된 것 포함 전체 컨테이너 목록
docker ps -a --filter "status=exited"
docker start <ct>컨테이너 수명 주기기존 컨테이너 시작, 설정 그대로 유지
docker start web
docker stop <ct>컨테이너 수명 주기정상 종료: SIGTERM 후 타임아웃 시 SIGKILL
docker stop -t 30 web
docker restart <ct>컨테이너 수명 주기컨테이너 재시작, 설정 변경 후 자주 필요
docker restart web
docker rm <ct>컨테이너 수명 주기중지된 컨테이너 삭제
docker rm web-old
docker rm -f <ct>컨테이너 수명 주기실행 중 컨테이너 강제 삭제
docker rm -f web
docker rename <old> <new>컨테이너 수명 주기컨테이너 이름 변경
docker rename web web-01
docker update --memory 1g <ct>컨테이너 수명 주기재생성 없이 리소스 제한 조정
docker update --memory 1g --memory-swap 1g web
docker attach <ct>컨테이너 수명 주기PID 1에 접속, Ctrl+C 시 컨테이너도 종료되므로 exec 권장
docker attach web
docker exec -it web sh접속과 파일 전송실행 중 컨테이너 접속, bash 없으면 sh 사용
docker exec -it web /bin/sh
docker exec -u root -it web sh접속과 파일 전송root로 접속, 기본 사용자 권한이 부족할 때
docker exec -u 0 -it web sh
docker exec web ls -l /etc/nginx접속과 파일 전송컨테이너에서 단일 명령 실행
docker exec web nginx -t
docker exec web cat /etc/resolv.conf접속과 파일 전송컨테이너 DNS 설정, 이름 해석 실패 시 우선 확인
docker exec web cat /etc/resolv.conf
docker cp ./app.conf web:/etc/nginx/conf.d/접속과 파일 전송호스트에서 컨테이너로 파일 복사
docker cp ./app.conf web:/etc/nginx/conf.d/app.conf
docker cp web:/var/log/app.log ./접속과 파일 전송컨테이너 파일을 호스트로 복사
docker cp web:/var/log/app.log ./app.log
docker diff <ct>접속과 파일 전송이미지 대비 컨테이너 내부 변경 파일 목록
docker diff web
docker export <ct> -o rootfs.tar접속과 파일 전송컨테이너 파일시스템 내보내기(이미지 메타데이터 제외)
docker export web -o web-rootfs.tar
docker network ls네트워크모든 네트워크 목록
docker network ls
docker network create app-net네트워크사용자 정의 브리지 네트워크 생성
docker network create --driver bridge app-net
docker network inspect app-net네트워크네트워크 내 컨테이너 IP 확인, 통신 문제 첫 점검
docker network inspect --format "{{range .Containers}}{{.Name}} {{.IPv4Address}}{{end}}" app-netdocker network connect app-net <ct>네트워크실행 중 컨테이너를 네트워크에 연결
docker network connect app-net web
docker network disconnect app-net <ct>네트워크컨테이너를 네트워크에서 분리
docker network disconnect app-net web
docker network rm app-net네트워크네트워크 삭제, 연결된 컨테이너가 있으면 먼저 분리
docker network rm app-net
docker port <ct>네트워크컨테이너 포트 매핑 확인
docker port web
docker run --network app-net --name api app:1.0네트워크사용자 정의 네트워크에서는 컨테이너 이름으로 서로 접근
docker run -d --network app-net --name api app:1.0
docker volume ls볼륨모든 볼륨 목록
docker volume ls -f dangling=true
docker volume create pgdata볼륨명명 볼륨 생성, 백업과 이전에 유리
docker volume create pgdata
docker volume inspect pgdata볼륨볼륨의 호스트 실제 경로 확인
docker volume inspect --format "{{.Mountpoint}}" pgdatadocker run -v $(pwd)/data:/data app:1.0볼륨호스트 디렉터리 바인드 마운트, 수정 즉시 반영
docker run -d -v $(pwd)/data:/app/data app:1.0
docker run -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro nginx볼륨설정 파일 읽기 전용 마운트, 컨테이너가 호스트 파일을 바꾸지 못하게
docker run -d -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro nginx
docker volume rm pgdata볼륨볼륨 삭제, 사용 중이면 컨테이너 먼저 삭제
docker volume rm pgdata
docker volume prune볼륨사용되지 않는 댕글링 볼륨 정리
docker volume prune -f
docker inspect -f "{{.Mounts}}" <ct>볼륨컨테이너 실제 마운트 확인, 설정 미반영 디버깅
docker inspect -f "{{json .Mounts}}" webdocker compose up -dComposecompose.yaml 기준으로 전체 서비스 백그라운드 시작
docker compose up -d
docker compose up -d --buildCompose이미지 재빌드 후 시작, Dockerfile 변경 시 필요
docker compose up -d --build
docker compose downCompose컨테이너와 네트워크 중지·삭제, 볼륨은 유지
docker compose down
docker compose down -vCompose볼륨까지 삭제, 데이터 소실 주의
docker compose down -v --remove-orphans
docker compose psCompose이 프로젝트의 컨테이너 상태 확인
docker compose ps -a
docker compose logs -f apiCompose특정 서비스 로그 추적
docker compose logs -f --tail 100 api
docker compose exec api shCompose서비스 컨테이너 접속
docker compose exec api /bin/sh
docker compose restart apiCompose특정 서비스만 재시작
docker compose restart api
docker compose pullComposecompose 파일이 참조하는 최신 이미지 내려받기
docker compose pull
docker compose configComposecompose 파일을 최종 설정으로 전개, 문법과 변수 검증
docker compose config
docker compose up -d --scale web=3Compose3개 인스턴스로 확장(고정 포트 매핑 불가)
docker compose up -d --scale web=3
docker compose --profile debug upCompose특정 profile의 서비스만 기동
docker compose --profile debug up -d
docker login registry.example.com레지스트리프라이빗 저장소 로그인, 자격 증명은 ~/.docker/config.json에 저장
docker login registry.example.com -u ci
docker logout registry.example.com레지스트리로그아웃 및 저장된 자격 증명 삭제
docker logout registry.example.com
docker push registry.example.com/app:1.0레지스트리이미지 푸시, 먼저 저장소 주소로 태그 필요
docker push registry.example.com/team/app:1.0
docker search nginx레지스트리Docker Hub에서 이미지 검색
docker search --limit 10 nginx
docker manifest inspect nginx:latest레지스트리이미지가 지원하는 아키텍처 확인
docker manifest inspect nginx:latest
docker buildx imagetools inspect app:1.0레지스트리원격 멀티 아키텍처 이미지 매니페스트 상세 확인
docker buildx imagetools inspect registry.example.com/app:1.0
docker system df정리이미지, 컨테이너, 볼륨, 빌드 캐시의 디스크 사용량
docker system df -v
docker system prune정리중지된 컨테이너, 미사용 네트워크, 댕글링 이미지 정리
docker system prune -f
docker system prune -a --volumes정리미사용 이미지와 볼륨까지 정리, 위험
docker system prune -a --volumes -f
docker builder prune정리빌드 캐시만 정리, 캐시가 디스크를 차지할 때
docker builder prune -a -f
docker container prune정리종료된 컨테이너 모두 삭제
docker container prune -f --filter "until=24h"
docker image prune정리댕글링 이미지 삭제, -a는 미사용까지 삭제
docker image prune -a -f
docker network prune정리사용하지 않는 네트워크 정리
docker network prune -f
docker rm -v $(docker ps -aq)정리모든 컨테이너와 익명 볼륨 일괄 삭제
docker rm -f -v $(docker ps -aq)
docker logs -f --tail 100 web디버깅과 리소스로그 마지막 100줄 추적, 디버깅 첫 단계
docker logs -f --tail 100 web
docker logs --since 10m web디버깅과 리소스최근 10분 로그만 확인
docker logs --since 10m --timestamps web
docker inspect -f "{{.State.Status}}" web디버깅과 리소스컨테이너 상태 조회, 스크립트에 적합
docker inspect -f "{{.State.Status}} exit={{.State.ExitCode}}" webdocker inspect -f "{{.State.ExitCode}}" <ct>디버깅과 리소스종료 코드 확인, 137은 대개 OOM
docker inspect -f "{{.State.ExitCode}}" webdocker stats디버깅과 리소스컨테이너별 CPU, 메모리, 네트워크 사용량 실시간 확인
docker stats --no-stream
docker top <ct>디버깅과 리소스컨테이너 내부 프로세스 확인
docker top web
docker events디버깅과 리소스Docker 이벤트 실시간 수신, 컨테이너 종료·재시작 확인
docker events --filter "container=web"
docker run -it --rm --entrypoint sh app:1.0디버깅과 리소스엔트리포인트 재정의로 이미지 점검, 컨테이너 기동 실패 원인 확인
docker run -it --rm --entrypoint sh app:1.0
docker run -it --rm --network container:web nicolaka/netshoot디버깅과 리소스네트워크 툴 이미지로 대상 컨테이너 네트워크 공유, 연결 테스트
docker run -it --rm --network container:web nicolaka/netshoot
docker build --progress=plain -t app:1.0 .디버깅과 리소스전체 빌드 로그 출력, 실패 단계 파악
docker build --progress=plain --no-cache -t app:1.0 .
docker inspect -f "{{json .HostConfig.RestartPolicy}}" <ct>디버깅과 리소스재시작 정책이 실제 적용됐는지 확인
docker inspect -f "{{json .HostConfig.RestartPolicy}}" webdocker diff <ct> | head -50디버깅과 리소스컨테이너에서 변경된 파일 확인
docker diff web | head -50
뭔가 잘못됐거나 빠진 게 있나요?
피드백 보내기