화. 8월 12th, 2025

G: 안녕하세요, 개발자 여러분! ✨ 컨테이너 기술의 대명사, 도커(Docker)는 이제 개발 환경 구축과 배포의 필수 도구가 되었습니다. 하지만 방대한 명령어 앞에서 어디서부터 시작해야 할지 막막하셨나요? 🤔 걱정 마세요! 이 글 하나로 여러분은 도커를 실전에서 바로 활용할 수 있는 핵심 명령어 30가지를 완벽하게 마스터하게 될 것입니다.

이 글은 도커의 기본 개념부터 컨테이너, 이미지, 네트워크, 볼륨 관리, 그리고 시스템 최적화에 이르기까지, 여러분이 가장 자주 사용하게 될 명령어들을 엄선하여 쉽고 자세한 예시와 함께 정리했습니다. 자, 그럼 도커의 세계로 함께 떠나볼까요? 💡


목차

  1. 도커 시작하기 전, 기본 개념 짚어보기
  2. 컨테이너 관리 (Container Management) 📦
  3. 이미지 관리 (Image Management) 🖼️
  4. 네트워크 관리 (Network Management) 🌐
  5. 볼륨 관리 (Volume Management) 💾
  6. 시스템 및 정보 (System & Info) 💻
  7. 레지스트리 및 배포 (Registry & Deployment) ⬆️
  8. 기타 유용한 명령어 (Other Useful Commands)
  9. 마무리: 도커, 두려워 말고 즐기세요! 🚀

1. 도커 시작하기 전, 기본 개념 짚어보기

본격적인 명령어 탐색에 앞서, 도커의 핵심 개념인 이미지(Image)컨테이너(Container) 를 간략히 이해하고 가는 것이 중요합니다.

  • 이미지 (Image): 애플리케이션 실행에 필요한 모든 것(코드, 런타임, 시스템 도구, 라이브러리 등)을 포함하는 읽기 전용 템플릿입니다. 마치 특정 소프트웨어를 설치할 수 있는 “설치 파일”이나 “ISO 파일”과 같다고 생각할 수 있습니다. 📦
  • 컨테이너 (Container): 이미지의 실행 가능한 인스턴스입니다. 이미지를 통해 생성되며, 격리된 환경에서 애플리케이션이 동작합니다. 즉, 이미지가 설계도라면 컨테이너는 그 설계도로 만들어진 “실제 제품”입니다. 🚀

이제 이 개념을 바탕으로 실전에서 자주 쓰는 명령어들을 살펴보겠습니다!


2. 컨테이너 관리 (Container Management) 📦

가장 기본적이고 핵심적인 명령어들입니다. 컨테이너를 생성하고, 실행하고, 중지하고, 삭제하는 등의 작업에 사용됩니다.

1. docker run : 컨테이너 생성 및 실행 (Create & Run)

가장 중요한 명령어입니다! 이미지를 기반으로 새로운 컨테이너를 생성하고 바로 실행합니다.

  • 설명: 지정된 이미지로 새 컨테이너를 만들고 시작합니다.
  • 문법: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 핵심 옵션:
    • -i, --interactive: 상호작용 모드를 활성화하여 표준 입력을 열어둡니다. (컨테이너 내에서 명령 입력 가능)
    • -t, --tty: 의사(pseudo) 터미널을 할당합니다. (-i와 함께 사용 시 터미널처럼 사용 가능)
    • --rm: 컨테이너 종료 시 자동으로 컨테이너를 삭제합니다. (임시 컨테이너에 유용)
    • -d, --detach: 컨테이너를 백그라운드에서 실행합니다. (데몬 모드)
    • -p, --publish host_port:container_port: 호스트 포트와 컨테이너 포트를 연결합니다. (포트 포워딩)
    • --name NAME: 컨테이너에 식별하기 쉬운 이름을 부여합니다.
    • -v, --volume host_path:container_path: 호스트 디렉토리나 볼륨을 컨테이너 내부에 마운트합니다.
    • --env KEY=VALUE: 환경 변수를 설정합니다.
    • --network NAME: 특정 도커 네트워크에 컨테이너를 연결합니다.
  • 실전 예시:

    # 1. Nginx 웹 서버 컨테이너를 백그라운드에서 실행하고, 호스트의 8080 포트를 컨테이너의 80 포트에 연결
    #    컨테이너 이름은 'my-nginx'로 지정하고, 종료 시 자동 삭제
    docker run -d -p 8080:80 --name my-nginx --rm nginx
    
    # 2. Ubuntu 컨테이너를 상호작용 모드로 실행하고, bash 쉘에 바로 접속
    docker run -it --rm ubuntu bash

    설명: 첫 번째 예시는 http://localhost:8080으로 접속하면 my-nginx 컨테이너의 Nginx 웹 서버가 응답하는 것을 확인할 수 있습니다. 두 번째 예시는 Ubuntu 환경에서 바로 명령어를 입력할 수 있게 해줍니다. 🧑‍💻

2. docker ps : 실행 중인 컨테이너 목록 확인 (List Running Containers)

현재 실행 중인 컨테이너들의 정보를 보여줍니다.

  • 설명: 현재 실행 중인 도커 컨테이너 목록을 보여줍니다.
  • 문법: docker ps [OPTIONS]
  • 핵심 옵션:
    • -a, --all: 모든 컨테이너 (실행 중이거나 종료된 컨테이너 모두)를 표시합니다.
    • -s, --size: 컨테이너의 가상 크기를 표시합니다.
    • -f, --filter "key=value": 특정 조건으로 필터링합니다. (예: status=exited, name=my-app)
  • 실전 예시:

    # 현재 실행 중인 모든 컨테이너 확인
    docker ps
    
    # 실행 중이거나 중지된 모든 컨테이너 확인
    docker ps -a
    
    # 특정 이름을 가진 컨테이너만 확인 (예: 'my-nginx' 컨테이너)
    docker ps -a --filter "name=my-nginx"

    설명: docker ps는 컨테이너 ID, 이미지, 명령어, 생성 시간, 상태, 포트 바인딩, 이름 등 유용한 정보를 제공합니다. 📋

3. docker start : 컨테이너 시작 (Start Container)

정지된 컨테이너를 다시 시작합니다.

  • 설명: 정지된 하나 이상의 컨테이너를 시작합니다.
  • 문법: docker start [OPTIONS] CONTAINER [CONTAINER...]
  • 실전 예시:
    # 'my-nginx'라는 이름의 컨테이너를 시작
    docker start my-nginx

    설명: 이미 존재하는 컨테이너를 이전에 중지시켰을 경우 유용합니다. 🌱

4. docker stop : 컨테이너 중지 (Stop Container)

실행 중인 컨테이너를 우아하게(gracefully) 중지합니다.

  • 설명: 실행 중인 하나 이상의 컨테이너를 중지합니다.
  • 문법: docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • 핵심 옵션:
    • -t, --time SECONDS: 컨테이너가 중지될 때까지 기다릴 시간 (초 단위). 기본값은 10초입니다.
  • 실전 예시:
    # 'my-nginx' 컨테이너를 중지
    docker stop my-nginx

    설명: 컨테이너에 SIGTERM 시그널을 보내어 프로세스가 종료될 시간을 줍니다. 🛑

5. docker restart : 컨테이너 재시작 (Restart Container)

컨테이너를 중지했다가 다시 시작합니다.

  • 설명: 하나 이상의 컨테이너를 중지했다가 다시 시작합니다.
  • 문법: docker restart [OPTIONS] CONTAINER [CONTAINER...]
  • 실전 예시:
    # 'my-nginx' 컨테이너를 재시작
    docker restart my-nginx

    설명: 애플리케이션 설정 변경 후 적용하거나, 문제가 발생했을 때 재시작하는 용도로 자주 사용됩니다. 🔄

6. docker rm : 컨테이너 삭제 (Remove Container)

정지된 컨테이너를 삭제합니다. 실행 중인 컨테이너는 바로 삭제할 수 없습니다.

  • 설명: 하나 이상의 컨테이너를 제거합니다.
  • 문법: docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 핵심 옵션:
    • -f, --force: 실행 중인 컨테이너를 강제로 삭제합니다. (주의 필요!)
    • -v, --volumes: 컨테이너와 연결된 익명 볼륨(anonymous volume)도 함께 삭제합니다.
  • 실전 예시:

    # 'my-nginx' 컨테이너 중지 후 삭제
    docker stop my-nginx
    docker rm my-nginx
    
    # 실행 중인 모든 컨테이너를 강제로 삭제 (주의!)
    docker rm -f $(docker ps -aq)

    설명: -f 옵션은 강력하므로 꼭 필요한 경우에만 사용하세요. 🗑️

7. docker exec : 실행 중인 컨테이너 내에서 명령어 실행 (Execute Command)

실행 중인 컨테이너 내부에 접속하거나, 특정 명령어를 실행할 때 사용합니다.

  • 설명: 실행 중인 컨테이너 내에서 명령어를 실행합니다.
  • 문법: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • 핵심 옵션:
    • -i, --interactive: 상호작용 모드 활성화.
    • -t, --tty: 의사 터미널 할당. (-it 조합으로 컨테이너 쉘 접속)
    • -d, --detach: 백그라운드에서 명령어 실행.
  • 실전 예시:

    # 'my-nginx' 컨테이너 내부의 bash 쉘에 접속
    docker exec -it my-nginx bash
    
    # 'my-nginx' 컨테이너 내부에서 Nginx 설정 파일 목록 확인
    docker exec my-nginx ls /etc/nginx/conf.d/

    설명: 컨테이너 내부로 들어가서 디버깅하거나, 특정 작업을 수행할 때 매우 유용합니다. 마치 SSH로 서버에 접속하는 것과 비슷합니다. 🚪

8. docker logs : 컨테이너 로그 확인 (View Logs)

컨테이너의 표준 출력(stdout) 및 표준 에러(stderr) 로그를 확인합니다.

  • 설명: 컨테이너의 로그를 가져옵니다.
  • 문법: docker logs [OPTIONS] CONTAINER
  • 핵심 옵션:
    • -f, --follow: 실시간으로 새로운 로그를 계속 출력합니다. (tail -f와 유사)
    • -t, --timestamps: 각 로그 라인에 타임스탬프를 추가합니다.
    • --tail N: 로그의 마지막 N줄만 표시합니다.
    • --since DURATION: 특정 기간 이후의 로그만 표시합니다.
  • 실전 예시:

    # 'my-nginx' 컨테이너의 모든 로그 확인
    docker logs my-nginx
    
    # 'my-nginx' 컨테이너의 로그를 실시간으로 확인
    docker logs -f my-nginx
    
    # 'my-nginx' 컨테이너의 마지막 10줄 로그 확인
    docker logs --tail 10 my-nginx

    설명: 애플리케이션의 동작을 모니터링하고 문제 발생 시 원인을 파악하는 데 필수적입니다. 📝

9. docker attach : 컨테이너에 재연결 (Re-attach to Container)

docker run -it로 실행한 컨테이너에 다시 연결하여 터미널 입력을 계속할 수 있습니다.

  • 설명: 실행 중인 컨테이너의 표준 입력, 출력, 에러 스트림에 연결합니다.
  • 문법: docker attach [OPTIONS] CONTAINER
  • 실전 예시:
    # 이전에 'docker run -it ubuntu bash'로 실행 후 Ctrl+P, Ctrl+Q로 detached된 컨테이너에 다시 연결
    docker attach peaceful_lovelace # 컨테이너 이름 또는 ID

    설명: docker exec와 유사하지만, attach는 컨테이너의 원래 프로세스에 연결하는 반면 exec는 새 프로세스를 실행합니다. 🔗

10. docker inspect : 컨테이너/이미지/네트워크/볼륨 상세 정보 확인 (Inspect Details)

도커 객체(컨테이너, 이미지, 네트워크, 볼륨 등)의 상세 정보를 JSON 형식으로 출력합니다.

  • 설명: 도커 객체의 저수준(low-level) 정보를 표시합니다.
  • 문법: docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  • 핵심 옵션:
    • -f, --format TEMPLATE: 지정된 Go 템플릿 형식으로 출력합니다.
  • 실전 예시:

    # 'my-nginx' 컨테이너의 모든 상세 정보 확인
    docker inspect my-nginx
    
    # 'my-nginx' 컨테이너의 IP 주소만 추출하여 확인
    docker inspect -f '{{.NetworkSettings.IPAddress}}' my-nginx

    설명: 문제 해결이나 자동화 스크립트 작성 시 매우 유용합니다. 컨테이너의 모든 설정과 상태를 파악할 수 있습니다. 🧐

11. docker top : 컨테이너 내 프로세스 확인 (View Processes)

실행 중인 컨테이너 내부에서 실행되는 프로세스 목록을 확인합니다.

  • 설명: 컨테이너의 실행 중인 프로세스를 표시합니다.
  • 문법: docker top CONTAINER [ps OPTIONS]
  • 실전 예시:
    # 'my-nginx' 컨테이너 내부의 프로세스 목록 확인
    docker top my-nginx

    설명: 컨테이너 내부에서 어떤 프로세스가 실행되고 있는지, CPU와 메모리를 얼마나 사용하고 있는지 확인할 때 사용합니다. 📊

12. docker stats : 컨테이너 자원 사용량 모니터링 (Monitor Resources)

실행 중인 컨테이너들의 CPU, 메모리, 네트워크 I/O 사용량 등을 실시간으로 보여줍니다.

  • 설명: 실행 중인 컨테이너의 자원 사용량(CPU, 메모리, 네트워크 I/O 등)을 실시간으로 스트리밍하여 표시합니다.
  • 문법: docker stats [OPTIONS] [CONTAINER...]
  • 핵심 옵션:
    • --no-stream: 스트리밍 없이 현재 상태만 한 번 표시합니다.
  • 실전 예시:

    # 모든 실행 중인 컨테이너의 자원 사용량 실시간 모니터링
    docker stats
    
    # 특정 컨테이너('my-nginx')의 자원 사용량 한 번만 확인
    docker stats my-nginx --no-stream

    설명: 컨테이너의 성능 병목을 찾거나, 자원 사용량을 추적할 때 매우 유용합니다. 📈

13. docker commit : 컨테이너 변경사항으로 새 이미지 생성 (Create Image from Container)

실행 중인 컨테이너의 현재 상태를 새로운 이미지로 저장합니다.

  • 설명: 컨테이너의 변경 사항을 새 이미지로 저장합니다.
  • 문법: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • 실전 예시:

    # 1. 테스트용 Ubuntu 컨테이너 생성 및 실행
    docker run -it --name my-ubuntu-dev ubuntu bash
    
    # 2. 컨테이너 내부에서 Nginx 설치 (컨테이너 내에서 작업)
    #    apt update && apt install -y nginx
    #    exit
    
    # 3. 변경된 컨테이너의 상태를 'my-custom-nginx' 이미지로 저장
    docker commit my-ubuntu-dev my-custom-nginx:v1.0
    
    # 4. 저장된 이미지 확인
    docker images my-custom-nginx

    설명: Dockerfile을 만드는 대신 임시로 컨테이너를 수정한 후 이미지로 만들 때 사용합니다. 하지만 권장되는 방법은 Dockerfile을 사용하는 것입니다. 💾


3. 이미지 관리 (Image Management) 🖼️

컨테이너의 기반이 되는 이미지를 다운로드, 빌드, 목록 확인, 삭제하는 명령어들입니다.

14. docker pull : 이미지 다운로드 (Download Image)

원격 레지스트리(예: Docker Hub)에서 이미지를 다운로드합니다.

  • 설명: 레지스트리에서 이미지를 가져옵니다.
  • 문법: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • 실전 예시:

    # Nginx 최신 버전 이미지 다운로드
    docker pull nginx:latest
    
    # Ubuntu 20.04 버전 이미지 다운로드
    docker pull ubuntu:20.04

    설명: docker run 명령어를 사용할 때 이미지가 로컬에 없으면 자동으로 pull을 수행합니다. 명시적으로 미리 다운로드할 때 사용합니다. 📥

15. docker build : 이미지 빌드 (Build Image)

Dockerfile을 사용하여 사용자 정의 이미지를 빌드합니다.

  • 설명: Dockerfile에서 이미지를 빌드합니다.
  • 문법: docker build [OPTIONS] PATH | URL | -
  • 핵심 옵션:
    • -t, --tag NAME:TAG: 빌드된 이미지에 이름과 태그를 부여합니다.
    • --no-cache: 빌드 시 캐시를 사용하지 않습니다.
    • -f, --file PATH: 사용할 Dockerfile의 경로를 지정합니다. (기본값: ./Dockerfile)
  • 실전 예시:
    # 현재 디렉토리의 Dockerfile을 사용하여 'my-app:1.0' 이미지 빌드
    # (현재 디렉토리에 Dockerfile이 존재해야 함)
    # 예시 Dockerfile:
    # FROM alpine/git
    # WORKDIR /app
    # COPY . .
    # RUN echo "Hello Docker!" > hello.txt
    # CMD ["cat", "hello.txt"]
    docker build -t my-app:1.0 .

    설명: 여러분의 애플리케이션을 도커 이미지로 만들 때 가장 많이 사용되는 명령어입니다. Dockerfile은 이미지 빌드 과정을 정의하는 스크립트입니다. 🏗️

16. docker images : 이미지 목록 확인 (List Images)

로컬 시스템에 저장된 이미지 목록을 확인합니다.

  • 설명: 로컬에 있는 이미지 목록을 보여줍니다.
  • 문법: docker images [OPTIONS] [REPOSITORY]
  • 핵심 옵션:
    • -a, --all: 중간 이미지(dangling images)를 포함하여 모든 이미지를 표시합니다.
    • -f, --filter "key=value": 특정 조건으로 필터링합니다. (예: dangling=true – 미사용 이미지)
  • 실전 예시:

    # 로컬의 모든 이미지 목록 확인
    docker images
    
    # 특정 이미지 이름으로 필터링
    docker images nginx

    설명: 용량이 큰 이미지를 정리하거나, 빌드된 이미지가 제대로 생성되었는지 확인할 때 사용합니다. 📸

17. docker tag : 이미지 태그 추가/변경 (Add/Change Image Tag)

기존 이미지에 새로운 태그(이름:버전)를 추가하거나 변경합니다.

  • 설명: 이미지에 태그를 지정합니다.
  • 문법: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 실전 예시:

    # 'my-app:1.0' 이미지를 'my-app:latest'로 태그 추가
    docker tag my-app:1.0 my-app:latest
    
    # 특정 이미지를 Docker Hub에 올릴 준비를 위해 사용자 이름으로 태그 변경
    docker tag my-app:1.0 your_dockerhub_id/my-app:1.0

    설명: 버전 관리나, 이미지를 다른 레지스트리에 푸시할 때 유용하게 사용됩니다. 🏷️

18. docker rmi : 이미지 삭제 (Remove Image)

로컬 시스템에 저장된 이미지를 삭제합니다.

  • 설명: 하나 이상의 이미지를 제거합니다.
  • 문법: docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 핵심 옵션:
    • -f, --force: 사용 중인 컨테이너가 있거나 다른 태그가 있어도 강제로 이미지를 삭제합니다. (주의 필요!)
    • --no-prune: 종속된 모든 부모 이미지를 삭제하지 않고 지정된 이미지만 삭제합니다.
  • 실전 예시:

    # 'my-app:1.0' 이미지 삭제
    docker rmi my-app:1.0
    
    # 사용되지 않는 모든 이미지 (dangling images) 삭제
    docker rmi $(docker images -f "dangling=true" -q)

    설명: 더 이상 필요 없는 이미지를 삭제하여 디스크 공간을 확보하는 데 중요합니다. 🗑️

19. docker history : 이미지 빌드 히스토리 확인 (View Image History)

이미지가 어떻게 빌드되었는지, 어떤 레이어로 구성되어 있는지 확인합니다.

  • 설명: 이미지의 히스토리를 표시합니다.
  • 문법: docker history [OPTIONS] IMAGE
  • 실전 예시:
    # Nginx 이미지의 빌드 히스토리 확인
    docker history nginx:latest

    설명: 이미지의 크기가 커지는 원인을 분석하거나, 특정 레이어에서 어떤 작업이 이루어졌는지 파악할 때 유용합니다. 📜


4. 네트워크 관리 (Network Management) 🌐

컨테이너 간 또는 컨테이너와 외부 네트워크 간의 통신을 관리합니다.

20. docker network ls : 네트워크 목록 확인 (List Networks)

도커에 존재하는 네트워크 목록을 확인합니다.

  • 설명: 네트워크 목록을 보여줍니다.
  • 문법: docker network ls [OPTIONS]
  • 실전 예시:
    # 모든 도커 네트워크 목록 확인
    docker network ls

    설명: bridge, host, null (none) 등 기본 네트워크와 사용자가 생성한 네트워크를 확인할 수 있습니다. 📡

21. docker network create : 네트워크 생성 (Create Network)

사용자 정의 네트워크를 생성합니다. 컨테이너 간의 격리된 통신 환경을 구축할 때 유용합니다.

  • 설명: 네트워크를 생성합니다.
  • 문법: docker network create [OPTIONS] NETWORK
  • 핵심 옵션:
    • --driver DRIVER: 네트워크 드라이버를 지정합니다. (기본값: bridge)
    • --subnet IP_RANGE: 서브넷을 지정합니다.
    • --gateway IP: 게이트웨이를 지정합니다.
  • 실전 예시:
    # 'my-app-network'라는 브릿지 네트워크 생성
    docker network create my-app-network

    설명: 여러 컨테이너가 서로 통신해야 할 때, 이 컨테이너들을 같은 사용자 정의 네트워크에 연결하면 컨테이너 이름으로 서로를 호출할 수 있어 편리합니다. 🌉

22. docker network inspect : 네트워크 상세 정보 확인 (Inspect Network Details)

특정 네트워크의 상세 정보를 확인합니다.

  • 설명: 네트워크의 저수준 정보를 표시합니다.
  • 문법: docker network inspect [OPTIONS] NETWORK [NETWORK...]
  • 실전 예시:
    # 'my-app-network'의 상세 정보 확인
    docker network inspect my-app-network

    설명: 네트워크에 연결된 컨테이너, 서브넷, 게이트웨이 등의 정보를 확인할 수 있습니다. 🔎

23. docker network connect : 컨테이너를 네트워크에 연결 (Connect Container to Network)

실행 중인 컨테이너를 특정 네트워크에 연결합니다.

  • 설명: 컨테이너를 네트워크에 연결합니다.
  • 문법: docker network connect [OPTIONS] NETWORK CONTAINER
  • 실전 예시:
    # 이전에 생성된 'my-nginx' 컨테이너를 'my-app-network'에 연결
    docker network connect my-app-network my-nginx

    설명: 서비스 확장 시 기존 컨테이너를 새 네트워크에 편입시킬 때 사용합니다. ↔️

24. docker network disconnect : 컨테이너를 네트워크에서 분리 (Disconnect Container from Network)

실행 중인 컨테이너를 특정 네트워크에서 분리합니다.

  • 설명: 컨테이너를 네트워크에서 분리합니다.
  • 문법: docker network disconnect [OPTIONS] NETWORK CONTAINER
  • 실전 예시:
    # 'my-nginx' 컨테이너를 'my-app-network'에서 분리
    docker network disconnect my-app-network my-nginx

    설명: 더 이상 해당 네트워크를 사용할 필요가 없는 컨테이너를 정리할 때 사용합니다. 🔌


5. 볼륨 관리 (Volume Management) 💾

컨테이너의 데이터를 영구적으로 저장하고 관리합니다. 컨테이너가 삭제되어도 데이터는 유지됩니다.

25. docker volume ls : 볼륨 목록 확인 (List Volumes)

도커에 존재하는 볼륨 목록을 확인합니다.

  • 설명: 볼륨 목록을 보여줍니다.
  • 문법: docker volume ls [OPTIONS]
  • 실전 예시:
    # 모든 도커 볼륨 목록 확인
    docker volume ls

    설명: 도커는 기본적으로 익명 볼륨(anonymous volume)을 생성하기도 합니다. 🗄️

26. docker volume create : 볼륨 생성 (Create Volume)

사용자 정의 볼륨을 생성합니다.

  • 설명: 볼륨을 생성합니다.
  • 문법: docker volume create [OPTIONS] [VOLUME]
  • 실전 예시:
    # 'my-data'라는 이름의 볼륨 생성
    docker volume create my-data

    설명: 데이터베이스나 파일 저장 등 영구적인 데이터 저장이 필요할 때 컨테이너에 마운트하여 사용합니다. 📁

27. docker volume inspect : 볼륨 상세 정보 확인 (Inspect Volume Details)

특정 볼륨의 상세 정보를 확인합니다.

  • 설명: 볼륨의 저수준 정보를 표시합니다.
  • 문법: docker volume inspect [OPTIONS] VOLUME [VOLUME...]
  • 실전 예시:
    # 'my-data' 볼륨의 상세 정보 확인
    docker volume inspect my-data

    설명: 볼륨의 마운트 지점, 드라이버, 상태 등을 확인할 수 있습니다. 🕵️‍♀️

28. docker volume rm : 볼륨 삭제 (Remove Volume)

볼륨을 삭제합니다.

  • 설명: 하나 이상의 볼륨을 제거합니다.
  • 문법: docker volume rm [OPTIONS] VOLUME [VOLUME...]
  • 핵심 옵션:
    • -f, --force: 사용 중인 컨테이너가 있어도 강제로 볼륨을 삭제합니다. (주의 필요!)
  • 실전 예시:

    # 'my-data' 볼륨 삭제
    docker volume rm my-data
    
    # 사용되지 않는 모든 볼륨 삭제 (주의!)
    docker volume prune

    설명: 더 이상 필요 없는 볼륨을 삭제하여 디스크 공간을 확보하는 데 중요합니다. docker volume prune은 더 안전하게 사용되지 않는 볼륨만 삭제합니다. 🗑️


6. 시스템 및 정보 (System & Info) 💻

도커 시스템의 전반적인 상태를 확인하고, 불필요한 자원을 정리하는 명령어들입니다.

29. docker info : 도커 시스템 정보 확인 (View Docker System Info)

도커 데몬 및 클라이언트의 시스템 정보, 컨테이너, 이미지, 볼륨, 네트워크 등의 개요를 표시합니다.

  • 설명: 도커 시스템 전반에 대한 자세한 정보를 표시합니다.
  • 문법: docker info [OPTIONS]
  • 실전 예시:
    # 도커 시스템 정보 확인
    docker info

    설명: 도커 버전, OS 정보, 컨테이너/이미지/볼륨/네트워크 개수, 스토리지 드라이버 등 다양한 정보를 한눈에 볼 수 있어 문제 해결이나 환경 파악에 유용합니다. ℹ️

30. docker system prune : 사용되지 않는 자원 정리 (Clean Up Unused Resources)

사용되지 않는 컨테이너, 네트워크, 이미지, 빌드 캐시 등을 한 번에 정리하여 디스크 공간을 확보합니다.

  • 설명: 사용되지 않는 도커 데이터를 제거합니다.
  • 문법: docker system prune [OPTIONS]
  • 핵심 옵션:
    • -a, --all: 사용되지 않는 이미지뿐만 아니라 사용되지 않는 모든 이미지(태그가 없지만 컨테이너가 사용 중인 이미지 포함)를 제거합니다.
    • --volumes: 사용되지 않는 볼륨까지 함께 제거합니다. (기본값은 볼륨은 제외)
    • -f, --force: 확인 프롬프트 없이 강제로 삭제합니다.
  • 실전 예시:

    # 사용되지 않는 컨테이너, 네트워크, 이미지(dangling) 및 빌드 캐시 삭제
    docker system prune
    
    # 사용되지 않는 모든 컨테이너, 네트워크, 이미지(dangling + unused) 및 볼륨까지 모두 삭제 (주의!)
    docker system prune -a --volumes

    설명: 도커를 오래 사용하다 보면 불필요한 자원이 많이 쌓이게 됩니다. 주기적으로 이 명령어를 사용하여 디스크 공간을 효율적으로 관리할 수 있습니다. 하지만 --volumes 옵션 사용 시 주의해야 합니다. 🧹


7. 레지스트리 및 배포 (Registry & Deployment) ⬆️

도커 이미지를 저장하고 공유하는 원격 저장소(레지스트리)와 관련된 명령어들입니다.

31. docker login : 레지스트리 로그인 (Log in to Registry)

Docker Hub와 같은 원격 이미지 레지스트리에 로그인합니다.

  • 설명: 도커 레지스트리에 로그인합니다.
  • 문법: docker login [OPTIONS] [SERVER]
  • 실전 예시:
    # Docker Hub에 로그인
    docker login
    # 사용자명과 비밀번호를 입력하라는 프롬프트가 나타납니다.

    설명: 이미지를 pull하거나 push하기 전에 먼저 로그인해야 합니다. 🔑

32. docker logout : 레지스트리 로그아웃 (Log out from Registry)

레지스트리에서 로그아웃합니다.

  • 설명: 도커 레지스트리에서 로그아웃합니다.
  • 문법: docker logout [SERVER]
  • 실전 예시:
    # Docker Hub에서 로그아웃
    docker logout

    설명: 보안을 위해 공용 컴퓨터에서 작업한 후에는 로그아웃하는 것이 좋습니다. 🚪

33. docker push : 이미지 레지스트리로 푸시 (Push Image to Registry)

로컬에 있는 이미지를 Docker Hub와 같은 원격 레지스트리로 업로드합니다.

  • 설명: 이미지를 레지스트리로 푸시합니다.
  • 문법: docker push [OPTIONS] NAME[:TAG]
  • 실전 예시:
    # 'my-app:1.0' 이미지를 Docker Hub에 푸시
    # (이미지 이름이 'your_dockerhub_id/my-app:1.0' 형식이어야 함)
    docker push your_dockerhub_id/my-app:1.0

    설명: 여러분이 만든 애플리케이션 이미지를 다른 사람들과 공유하거나, 배포 환경에서 사용할 수 있도록 레지스트리에 저장할 때 사용합니다. ⬆️


8. 기타 유용한 명령어 (Other Useful Commands) ✅

위에 포함되지 않았지만 실전에서 알아두면 좋은 명령어들입니다.

34. docker cp : 컨테이너와 호스트 간 파일 복사 (Copy Files to/from Container)

호스트와 컨테이너 간에 파일을 복사합니다.

  • 설명: 컨테이너와 로컬 파일 시스템 간에 파일을 복사합니다.
  • 문법: docker cp [OPTIONS] CONTAINER:PATH HOSTPATH 또는 docker cp [OPTIONS] HOSTPATH CONTAINER:PATH
  • 실전 예시:

    # 1. 호스트의 현재 디렉토리의 'local_file.txt'를 'my-nginx' 컨테이너의 '/tmp/' 경로로 복사
    docker cp local_file.txt my-nginx:/tmp/
    
    # 2. 'my-nginx' 컨테이너의 '/etc/nginx/nginx.conf' 파일을 호스트의 현재 디렉토리로 복사
    docker cp my-nginx:/etc/nginx/nginx.conf .

    설명: 컨테이너 내부의 로그 파일이나 설정 파일을 가져오거나, 필요한 파일을 컨테이너에 넣어줄 때 매우 편리합니다. 📋↔️📦

35. docker version : 도커 버전 정보 확인 (View Docker Version)

도커 클라이언트 및 서버(데몬)의 버전 정보를 확인합니다.

  • 설명: 도커 버전 정보를 표시합니다.
  • 문법: docker version [OPTIONS]
  • 실전 예시:
    # 도커 클라이언트 및 서버 버전 확인
    docker version

    설명: 특정 기능이 지원되는지 확인하거나, 문제 발생 시 호환성 여부를 파악할 때 사용합니다. 🔢


마무리: 도커, 두려워 말고 즐기세요! 🚀

축하합니다! 🎉 지금까지 도커를 실전에서 바로 활용할 수 있는 핵심 명령어 30가지 이상을 상세한 예시와 함께 살펴보았습니다. 이 명령어들은 여러분이 도커를 사용하여 개발 환경을 구축하고, 애플리케이션을 배포하며, 문제를 해결하는 데 있어 강력한 도구가 될 것입니다.

도커의 세계는 무궁무진하지만, 이 핵심 명령어들을 충분히 익히고 나면 어떤 상황에서도 당황하지 않고 도커를 자유자재로 다룰 수 있을 겁니다.

가장 중요한 것은 직접 해보는 것! 💻 지금 바로 터미널을 열고 위에서 배운 명령어들을 직접 입력해보고, 각 옵션들을 바꿔가며 실험해보세요. 그렇게 하다 보면 어느새 도커가 여러분의 개발 생산성을 한 단계 끌어올려 줄 것입니다.

궁금한 점이 있다면 언제든지 docker [명령어] --help를 입력하여 더 자세한 정보를 확인하는 습관을 들이세요! 도커 공식 문서도 훌륭한 학습 자료입니다.

다음 단계로는 여러 컨테이너를 함께 관리하는 Docker Compose를 학습해보시는 것을 추천합니다.

도커와 함께 즐거운 개발 되시길 바랍니다! 🚀 감사합니다. ✨

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다