도커 컨테이너 관리는 현대 개발/운영 환경에서 필수 스킬입니다. 이 포스팅에서는 컨테이너 생명주기 관리에 필요한 30가지 핵심 명령어를 실무 예제와 함께 상세히 설명합니다!
🔄 컨테이너 생명주기 관리
-
docker run
새 컨테이너 생성 + 실행docker run -d -p 8080:80 --name my_nginx nginx:latest
-d
: 백그라운드 실행-p
: 포트 매핑 (호스트:컨테이너)--name
: 컨테이너 이름 지정
-
docker start
중지된 컨테이너 시작docker start my_nginx
-
docker stop
실행 중인 컨테이너 정상 종료docker stop my_nginx # SIGTERM 전송
-
docker restart
컨테이너 재시작docker restart my_nginx
-
docker pause
/unpause
프로세스 일시 정지/재개docker pause my_nginx docker unpause my_nginx
-
docker kill
컨테이너 강제 종료 (SIGKILL)docker kill my_nginx # 즉시 종료
-
docker rm
컨테이너 삭제docker rm my_nginx docker rm -f my_nginx # 실행 중인 컨테이너 강제 삭제
-
docker create
컨테이너 생성만 (실행 X)docker create --name dummy alpine:latest
👀 컨테이너 모니터링
-
docker ps
컨테이너 목록 확인docker ps -a # 전체 컨테이너 (중지 포함) docker ps -q # ID만 출력
-
docker logs
컨테이너 로그 확인docker logs -f my_nginx # 실시간 스트리밍 docker logs --tail 100 my_nginx # 최근 100줄
-
docker stats
실시간 리소스 사용량docker stats # 전체 컨테이너 docker stats my_nginx # 특정 컨테이너
-
docker top
컨테이너 내 실행 중인 프로세스docker top my_nginx
-
docker events
실시간 도커 이벤트 수신docker events --filter 'container=my_nginx'
🔍 정보 조회
-
docker inspect
컨테이너 상세 정보 (JSON)docker inspect my_nginx | grep IPAddress # IP 주소 추출
-
docker diff
컨테이너 파일 시스템 변경 사항docker diff my_nginx # A: 추가, D: 삭제, C: 변경
-
docker port
포트 매핑 정보 확인docker port my_nginx # 80/tcp -> 0.0.0.0:8080
-
docker wait
컨테이너 종료까지 대기docker wait my_nginx # 종료 코드 반환
⚙️ 설정 관리
-
docker rename
컨테이너 이름 변경docker rename my_nginx new_nginx
-
docker update
실행 중인 컨테이너 설정 변경docker update --memory 512M my_nginx
-
docker commit
컨테이너 → 새 이미지 생성docker commit my_nginx custom_nginx:v1
-
docker cp
호스트 ↔ 컨테이너 파일 복사docker cp index.html my_nginx:/usr/share/nginx/html docker cp my_nginx:/log/access.log ./
🛠️ 고급 작업
-
docker exec
실행 중인 컨테이너에서 명령 실행docker exec -it my_nginx /bin/bash # 대화형 쉘 docker exec my_nginx nginx -t # 명령 실행
-
docker attach
실행 중인 컨테이너에 연결docker attach my_nginx # Ctrl+P,Q로 분리
-
docker export
컨테이너 파일 시스템 추출docker export my_nginx > nginx.tar
-
docker import
tar 파일 → 새 이미지 생성docker import nginx.tar my_nginx_image
🧹 정리 명령어
-
docker container prune
중지된 모든 컨테이너 삭제docker container prune # 확인 요청 docker container prune -f # 강제 삭제
-
docker logs --since
특정 시간 이후 로그 필터링docker logs --since 2023-10-01T00:00:00 my_nginx
-
docker system prune
사용되지 않는 모든 도커 객체 정리docker system prune -a --volumes
🧪 테스트/디버깅
-
docker run --rm
종료 시 자동 삭제 모드docker run --rm alpine echo "Hello Docker!"
-
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