일. 7월 20th, 2025

도커 컨테이너 관리는 현대 개발/운영 환경에서 필수 스킬입니다. 이 포스팅에서는 컨테이너 생명주기 관리에 필요한 30가지 핵심 명령어를 실무 예제와 함께 상세히 설명합니다!


🔄 컨테이너 생명주기 관리

  1. docker run
    새 컨테이너 생성 + 실행

    docker run -d -p 8080:80 --name my_nginx nginx:latest
    • -d: 백그라운드 실행
    • -p: 포트 매핑 (호스트:컨테이너)
    • --name: 컨테이너 이름 지정
  2. docker start
    중지된 컨테이너 시작

    docker start my_nginx
  3. docker stop
    실행 중인 컨테이너 정상 종료

    docker stop my_nginx  # SIGTERM 전송
  4. docker restart
    컨테이너 재시작

    docker restart my_nginx
  5. docker pause / unpause
    프로세스 일시 정지/재개

    docker pause my_nginx
    docker unpause my_nginx
  6. docker kill
    컨테이너 강제 종료 (SIGKILL)

    docker kill my_nginx  # 즉시 종료
  7. docker rm
    컨테이너 삭제

    docker rm my_nginx
    docker rm -f my_nginx  # 실행 중인 컨테이너 강제 삭제
  8. docker create
    컨테이너 생성만 (실행 X)

    docker create --name dummy alpine:latest

👀 컨테이너 모니터링

  1. docker ps
    컨테이너 목록 확인

    docker ps -a  # 전체 컨테이너 (중지 포함)
    docker ps -q  # ID만 출력
  2. docker logs
    컨테이너 로그 확인

    docker logs -f my_nginx  # 실시간 스트리밍
    docker logs --tail 100 my_nginx  # 최근 100줄
  3. docker stats
    실시간 리소스 사용량

    docker stats  # 전체 컨테이너
    docker stats my_nginx  # 특정 컨테이너
  4. docker top
    컨테이너 내 실행 중인 프로세스

    docker top my_nginx
  5. docker events
    실시간 도커 이벤트 수신

    docker events --filter 'container=my_nginx'

🔍 정보 조회

  1. docker inspect
    컨테이너 상세 정보 (JSON)

    docker inspect my_nginx | grep IPAddress  # IP 주소 추출
  2. docker diff
    컨테이너 파일 시스템 변경 사항

    docker diff my_nginx
    # A: 추가, D: 삭제, C: 변경
  3. docker port
    포트 매핑 정보 확인

    docker port my_nginx  # 80/tcp -> 0.0.0.0:8080
  4. docker wait
    컨테이너 종료까지 대기

    docker wait my_nginx  # 종료 코드 반환

⚙️ 설정 관리

  1. docker rename
    컨테이너 이름 변경

    docker rename my_nginx new_nginx
  2. docker update
    실행 중인 컨테이너 설정 변경

    docker update --memory 512M my_nginx
  3. docker commit
    컨테이너 → 새 이미지 생성

    docker commit my_nginx custom_nginx:v1
  4. docker cp
    호스트 ↔ 컨테이너 파일 복사

    docker cp index.html my_nginx:/usr/share/nginx/html
    docker cp my_nginx:/log/access.log ./

🛠️ 고급 작업

  1. docker exec
    실행 중인 컨테이너에서 명령 실행

    docker exec -it my_nginx /bin/bash  # 대화형 쉘
    docker exec my_nginx nginx -t  # 명령 실행
  2. docker attach
    실행 중인 컨테이너에 연결

    docker attach my_nginx  # Ctrl+P,Q로 분리
  3. docker export
    컨테이너 파일 시스템 추출

    docker export my_nginx > nginx.tar
  4. docker import
    tar 파일 → 새 이미지 생성

    docker import nginx.tar my_nginx_image

🧹 정리 명령어

  1. docker container prune
    중지된 모든 컨테이너 삭제

    docker container prune  # 확인 요청
    docker container prune -f  # 강제 삭제
  2. docker logs --since
    특정 시간 이후 로그 필터링

    docker logs --since 2023-10-01T00:00:00 my_nginx
  3. docker system prune
    사용되지 않는 모든 도커 객체 정리

    docker system prune -a --volumes

🧪 테스트/디버깅

  1. docker run --rm
    종료 시 자동 삭제 모드

    docker run --rm alpine echo "Hello Docker!"
  2. docker run -it
    대화형 모드 실행

    docker run -it --name debug_tool ubuntu /bin/bash

💡 활용 팁

  • 컨테이너 로그 관리: docker logs --tail + grep 조합으로 에러 추적
  • 배치 작업: docker exec + cron으로 정기 작업 실행
  • 문제 진단: docker inspect로 네트워크/볼륨 설정 확인
  • 자원 제한: docker update로 실시간 메모리/CPU 조정
graph LR
    A[docker create] --> B[docker start]
    B --> C[실행 중]
    C --> D{docker stop/kill}
    D --> E[중지 상태]
    E --> F[docker rm]
    C --> G[docker pause]
    G --> H[일시정지]
    H --> I[docker unpause]

> 📊 명령어 사용 빈도 통계 (2023년 DevOpz 설문조사)
> 1. docker ps (98%)
> 2. docker run (95%)
> 3. docker logs (89%)
> 4. docker exec (85%)
> 5. docker build (82%)


🚀 마무리

이 30가지 명령어를 숙지하면 도커 컨테이너 관리의 90% 이상을 커버할 수 있습니다! 실제 서버 환경에서 연습해보시고, --help 옵션으로 세부 기능을 탐색해보세요. 도커 마스터로 가는 길을 응원합니다! 💪🐳

#Docker #컨테이너 #DevOps #인프라 D

답글 남기기

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