← 목록으로
📅 2026.05.03
자주 사용하는 필수 Docker Command 상세 가이드
TechStudyContainerCommandDevOps

Docker를 실무에 적용하기 위해 반드시 알아야 할 주요 명령어와 옵션들을 상세하게 살펴봅니다.


1. 이미지 관리 (Image Management)

컨테이너의 템플릿인 이미지를 다운로드, 빌드, 확인, 삭제합니다.

  • docker pull [이미지명:태그]: 레지스트리에서 이미지를 다운로드합니다.
  • docker build [옵션] .: 현재 디렉토리의 Dockerfile을 기반으로 이미지를 빌드합니다.
    • -t [이름:태그]: 생성할 이미지의 고유한 이름과 버전을 지정합니다.
  • docker images: 로컬에 저장된 도커 이미지 목록을 확인합니다.
  • docker rmi [옵션] [이미지명]: 로컬 이미지를 삭제합니다.
    • -f: 현재 컨테이너가 사용 중인 이미지이더라도 강제로 삭제합니다.

2. 컨테이너 실행 및 관리 (Container Management)

이미지를 기반으로 컨테이너를 구동하고 생명주기를 관리합니다.

  • docker run [옵션] [이미지명]: 이미지를 기반으로 컨테이너를 생성하고 실행합니다.
    • -d: 컨테이너를 백그라운드 모드(데몬)로 실행하여 터미널을 점유하지 않습니다.
    • -p [호스트포트]:[컨테이너포트]: 호스트 PC의 포트와 컨테이너 내부 포트를 연결(바인딩)합니다.
    • -v [호스트경로]:[컨테이너경로]: 호스트의 디렉토리나 파일을 컨테이너 내부에 마운트합니다.
    • --name [이름]: 실행될 컨테이너에 사용자가 식별하기 쉬운 고유 이름을 부여합니다.
    • -e [변수명=값]: 컨테이너 내부 환경에서 사용할 환경 변수(DB 비밀번호 등)를 주입합니다.
    • -it: 컨테이너와 상호작용할 수 있도록 터미널 입출력을 활성화합니다.
  • docker ps [옵션]: 현재 실행 중인 컨테이너 목록을 확인합니다.
    • -a: 실행 중인 것뿐만 아니라 중지되거나 종료된 모든 컨테이너 목록을 출력합니다.
  • docker stop [컨테이너명/ID]: 실행 중인 컨테이너를 안전하게 중지합니다.
  • docker start [컨테이너명/ID]: 중지된 컨테이너를 다시 시작합니다.
  • docker rm [옵션] [컨테이너명/ID]: 중지된 컨테이너를 삭제합니다.
    • -f: 실행 중인 컨테이너를 먼저 강제로 중지시킨 후 바로 삭제합니다.

3. 디버깅 및 유지보수 (Debugging & Maintenance)

실행 중인 컨테이너의 내부 상태를 확인하고 접속합니다.

  • docker logs [옵션] [컨테이너명]: 컨테이너의 출력 및 에러 로그를 확인합니다.
    • -f: 프로세스가 종료될 때까지 실시간으로 로그 끝부분을 계속 추적하여 출력합니다.
    • --tail [숫자]: 전체 로그 대신 마지막으로 출력된 N줄의 로그만 간추려서 보여줍니다.
  • docker exec [옵션] [컨테이너명] [명령어]: 실행 중인 컨테이너 내부에 새로운 명령어를 전달하여 실행합니다.
    • -it: 상호작용 가능한 터미널 환경을 열어줍니다. (주로 /bin/bash/bin/sh와 결합하여 쉘에 접속할 때 사용)

4. 데이터 저장 및 파일 전송 (Data & File Transfer)

컨테이너의 휘발성 데이터를 영구 보존하고 호스트와 파일을 교환합니다.

  • docker volume create [볼륨명]: 도커가 관리하는 독립적인 데이터 볼륨 공간을 생성합니다.
  • docker volume ls: 생성된 볼륨 목록을 확인합니다.
  • docker cp [원본경로] [대상경로]: 호스트와 컨테이너 간에 파일이나 디렉토리를 양방향으로 복사합니다.

5. 네트워크 및 리소스 모니터링 (Network & Monitoring)

컨테이너 간의 통신망을 구성하고 시스템 상태를 점검합니다.

  • docker network create [네트워크명]: 컨테이너 간 내부 통신을 위한 사용자 정의 네트워크(Bridge)를 생성합니다.
  • docker network ls: 도커 네트워크 목록을 확인합니다.
  • docker stats: 실행 중인 모든 컨테이너의 CPU, 메모리, 네트워크 I/O 실시간 사용량을 모니터링합니다.
  • docker inspect [컨테이너/이미지명]: 컨테이너나 이미지의 상세 메타데이터(IP 주소, 환경변수, 볼륨 등)를 JSON 형태로 출력합니다.

6. 시스템 리소스 정리 (System Cleanup)

디스크 공간 확보를 위해 불필요한 도커 객체들을 일괄 정리합니다.

  • docker system prune [옵션]: 중지된 컨테이너, 사용되지 않는 네트워크 및 빌드 캐시를 일괄 삭제합니다.
    • -a: 현재 실행 중인 컨테이너가 참조하지 않는 "모든" 이미지(태그가 있는 정상 이미지 포함)를 함께 삭제합니다.
    • -f: 삭제 재확인 프롬프트(y/N)를 띄우지 않고 즉시 강제 삭제를 진행합니다.

7. 상태 저장, 레지스트리 배포 및 백업

컨테이너 상태를 캡처하거나 폐쇄망/외부 환경으로 이미지를 이동시킵니다.

  • docker commit [컨테이너명] [새이미지명:태그]: 컨테이너 내부에서 변경된 현재 상태를 통째로 묶어 새로운 이미지로 생성합니다.
  • docker login / docker logout: 원격 도커 레지스트리(Docker Hub, AWS ECR 등)에 인증하거나 로그아웃합니다.
  • docker tag [기존이미지명] [계정/이미지명:태그]: 이미지를 원격 저장소에 푸시하기 전, 레지스트리 주소가 포함된 새로운 규격의 이름을 부여합니다.
  • docker push [계정/이미지명:태그]: 로컬에 있는 이미지를 원격 레지스트리로 업로드(배포)합니다.
  • docker save [옵션] [이미지명]: 이미지를 레이어 히스토리와 함께 완전한 압축 파일로 추출합니다. (백업용)
    • -o [파일명.tar]: 추출되어 저장될 tar 파일의 이름과 경로를 지정합니다.
  • docker load [옵션]: tar로 추출된 이미지를 도커 환경 내로 다시 불러옵니다. (망분리 복원용)
    • -i [파일명.tar]: 불러올 tar 파일의 대상 경로를 지정합니다.
  • docker export [옵션] [컨테이너명]: 현재 컨테이너의 순수 파일 시스템 껍데기만 가볍게 tar로 추출합니다.
    • -o [파일명.tar]: 추출되어 저장될 tar 파일의 이름과 경로를 지정합니다.
  • docker import [파일명.tar] [새이미지명]: export로 추출한 파일 시스템 구조를 얹어 새로운 단일 레이어 이미지로 생성합니다.