Docker 명령어 모음

Docker 및 Docker Compose 명령어를 정리한 치트시트입니다.

90개 명령어

컨테이너 관리

명령어설명
docker run <image>
이미지로 컨테이너 실행
docker run -d <image>
백그라운드에서 실행 (detached)
docker run -it <image> /bin/bash
인터랙티브 셸로 실행
docker run -p 8080:80 <image>
포트 매핑하여 실행 (호스트:컨테이너)
docker run -v /host:/container <image>
볼륨 마운트하여 실행
docker run --name my-app <image>
이름을 지정하여 실행
docker run --rm <image>
종료 시 자동 삭제
docker run -e KEY=VALUE <image>
환경 변수 설정하여 실행
docker run --env-file .env <image>
.env 파일로 환경 변수 전달
docker run --restart unless-stopped <image>
자동 재시작 정책 설정
docker ps
실행 중인 컨테이너 목록
docker ps -a
모든 컨테이너 목록 (정지 포함)
docker stop <container>
컨테이너 정지
docker start <container>
정지된 컨테이너 시작
docker restart <container>
컨테이너 재시작
docker rm <container>
컨테이너 삭제
docker rm -f <container>
실행 중인 컨테이너 강제 삭제
docker exec -it <container> /bin/bash
실행 중인 컨테이너에 셸 접속
docker logs <container>
컨테이너 로그 확인
docker logs -f --tail 100 <container>
최근 100줄부터 실시간 로그
docker inspect <container>
컨테이너 상세 정보 (JSON)
docker container prune
정지된 모든 컨테이너 삭제

이미지 관리

명령어설명
docker images
로컬 이미지 목록
docker pull <image>
레지스트리에서 이미지 다운로드
docker pull <image>:<tag>
특정 태그의 이미지 다운로드
docker build -t <name> .
Dockerfile로 이미지 빌드
docker build -t <name>:<tag> .
태그 지정하여 빌드
docker build -f Dockerfile.prod .
커스텀 Dockerfile 지정 빌드
docker build --no-cache -t <name> .
캐시 없이 빌드
docker tag <image> <new-name>:<tag>
이미지 태그 변경
docker push <image>
레지스트리에 이미지 푸시
docker rmi <image>
이미지 삭제
docker image prune
사용하지 않는 이미지 삭제
docker image prune -a
참조되지 않는 모든 이미지 삭제
docker history <image>
이미지 레이어 이력
docker save -o backup.tar <image>
이미지를 tar 파일로 저장
docker load -i backup.tar
tar 파일에서 이미지 복원

볼륨 & 네트워크

명령어설명
docker volume ls
볼륨 목록
docker volume create <name>
볼륨 생성
docker volume inspect <name>
볼륨 상세 정보
docker volume rm <name>
볼륨 삭제
docker volume prune
사용하지 않는 볼륨 삭제
docker network ls
네트워크 목록
docker network create <name>
네트워크 생성
docker network create --driver bridge <name>
브리지 네트워크 생성
docker network connect <net> <container>
컨테이너를 네트워크에 연결
docker network disconnect <net> <container>
네트워크 연결 해제
docker network inspect <name>
네트워크 상세 정보
docker network rm <name>
네트워크 삭제

시스템 & 정리

명령어설명
docker system df
디스크 사용량 확인
docker system prune
사용하지 않는 리소스 정리
docker system prune -a --volumes
모든 미사용 리소스 + 볼륨 정리
docker stats
컨테이너 리소스 사용량 실시간 모니터링
docker top <container>
컨테이너 프로세스 확인
docker cp <container>:/path /host/path
컨테이너에서 호스트로 파일 복사
docker cp /host/path <container>:/path
호스트에서 컨테이너로 파일 복사
docker info
Docker 시스템 정보
docker version
Docker 버전 확인

Docker Compose

명령어설명
docker compose up
서비스 시작 (포그라운드)
docker compose up -d
백그라운드에서 서비스 시작
docker compose up --build
이미지 빌드 후 서비스 시작
docker compose up -d --scale web=3
서비스 인스턴스 3개로 스케일링
docker compose down
서비스 정지 및 컨테이너/네트워크 삭제
docker compose down -v
볼륨 포함 정지 및 삭제
docker compose down --rmi all
이미지까지 포함 삭제
docker compose ps
서비스 상태 목록
docker compose logs
모든 서비스 로그 확인
docker compose logs -f <service>
특정 서비스 실시간 로그
docker compose exec <service> bash
서비스 컨테이너에 셸 접속
docker compose run <service> <cmd>
일회성 명령어 실행
docker compose build
서비스 이미지 빌드
docker compose pull
서비스 이미지 다운로드
docker compose restart <service>
특정 서비스 재시작
docker compose config
Compose 파일 유효성 확인 및 렌더링
docker compose top
서비스 프로세스 확인

Dockerfile 주요 명령어

명령어설명
FROM <image>
베이스 이미지 지정
FROM <image> AS builder
멀티 스테이지 빌드 스테이지 이름
WORKDIR /app
작업 디렉토리 설정
COPY . .
파일 복사 (빌드 컨텍스트 → 이미지)
COPY --from=builder /app/dist .
다른 스테이지에서 파일 복사
ADD <src> <dest>
파일 복사 (URL, tar 자동 해제 지원)
RUN npm install
빌드 시 명령어 실행 (새 레이어 생성)
CMD ["node", "index.js"]
컨테이너 시작 기본 명령어
ENTRYPOINT ["node"]
고정 실행 명령어 (CMD와 조합)
EXPOSE 3000
포트 문서화 (실제 포트 열기 아님)
ENV KEY=VALUE
환경 변수 설정 (런타임 지속)
ARG VERSION=latest
빌드 인자 정의 (빌드 시에만 사용)
VOLUME /data
볼륨 마운트 포인트 정의
USER node
이후 명령어의 실행 사용자 지정
HEALTHCHECK CMD curl -f http://localhost/
컨테이너 헬스체크 설정

자주 묻는 질문

Docker와 Docker Compose의 차이점은 무엇인가요?
Docker는 단일 컨테이너를 관리하는 도구이고, Docker Compose는 여러 컨테이너를 docker-compose.yml(또는 compose.yaml) 파일로 정의하고 한 번에 관리할 수 있는 도구입니다. 웹앱 + DB + Redis 같은 멀티 서비스 환경에서 필수적입니다.
Docker 이미지와 컨테이너의 차이는 무엇인가요?
이미지는 애플리케이션 실행에 필요한 파일, 라이브러리, 설정을 담은 불변(immutable) 템플릿이고, 컨테이너는 이미지를 기반으로 생성된 실행 중인 인스턴스입니다. 하나의 이미지로 여러 컨테이너를 만들 수 있습니다.
Docker 볼륨은 왜 사용하나요?
컨테이너는 삭제되면 내부 데이터가 사라집니다. 볼륨(volume)을 사용하면 컨테이너가 삭제되어도 데이터를 영구적으로 보존할 수 있고, 호스트와 컨테이너 간 데이터 공유에도 활용됩니다.
docker run -d와 docker run -it의 차이는 무엇인가요?
-d(detached)는 컨테이너를 백그라운드에서 실행합니다. -it는 -i(interactive) + -t(tty)로, 터미널에서 컨테이너와 대화형으로 상호작용할 수 있습니다. 서비스는 -d, 디버깅은 -it를 사용합니다.
Dockerfile에서 CMD와 ENTRYPOINT의 차이는 무엇인가요?
CMD는 컨테이너 시작 시 기본 명령어를 지정하며 docker run 인자로 덮어쓸 수 있습니다. ENTRYPOINT는 항상 실행되는 고정 명령어이며, CMD의 값은 ENTRYPOINT의 인자로 전달됩니다.
Docker 멀티 스테이지 빌드란 무엇인가요?
Dockerfile에서 여러 FROM을 사용하여 빌드 단계와 실행 단계를 분리하는 기법입니다. 빌드에 필요한 도구(컴파일러 등)를 최종 이미지에 포함하지 않아 이미지 크기를 크게 줄일 수 있습니다.
docker compose up과 docker compose up --build의 차이는?
docker compose up은 기존에 빌드된 이미지가 있으면 재사용합니다. --build 옵션을 추가하면 매번 이미지를 새로 빌드하므로, 코드 변경 후에는 --build를 사용해야 합니다.

다른 도구