D: Docker는 현대 개발 환경에서 필수적인 도구로, 컨테이너화된 애플리케이션을 효율적으로 관리할 수 있게 해줍니다. 하지만 수많은 명령어와 옵션을 외우기란 쉽지 않죠! 이번 포스팅에서는 실무에서 자주 사용하는 Docker 명령어를 체계적으로 정리해보겠습니다. 개발 생산성을 높이는 핵심 명령어부터 고급 활용법까지 알아보세요!
🔥 1. 기본 컨테이너 관리 명령어
이미지 다운로드 & 실행
docker pull [이미지명]:[태그] # 예: docker pull nginx:latest
docker run [옵션] [이미지명] # 예: docker run -d -p 8080:80 --name my-nginx nginx
-d
: 백그라운드 실행 (detached mode)-p
: 포트 매핑 (호스트포트:컨테이너포트)--name
: 컨테이너 이름 지정
실행 중인 컨테이너 확인
docker ps # 실행 중인 컨테이너 목록
docker ps -a # 모든 컨테이너 (종료된 것 포함)
docker stats # 실시간 리소스 사용량 모니터링
🛠 2. 컨테이너 제어 & 디버깅
컨테이너 시작/정지/재시작
docker start [컨테이너ID]
docker stop [컨테이너ID] # Graceful shutdown
docker restart [컨테이너ID]
docker kill [컨테이너ID] # 강제 종료 (SIGKILL)
로그 확인
docker logs [컨테이너ID] # 로그 출력
docker logs -f [컨테이너ID] # 실시간 로그 스트리밍 (tail -f와 동일)
컨테이너 내부 접속
docker exec -it [컨테이너ID] /bin/bash # 대화형 쉘 접속
# 예: docker exec -it my-nginx bash
-it
: 인터랙티브 모드로 터미널 연결
📦 3. 이미지 관리
이미지 빌드 & 태깅
docker build -t [이미지명]:[태그] [Dockerfile 경로]
# 예: docker build -t my-app:1.0 .
이미지 목록 & 삭제
docker images # 로컬 이미지 목록
docker rmi [이미지ID] # 이미지 삭제
Docker Hub에 푸시
docker login
docker tag [기존이미지] [사용자명]/[레포지토리명]:[태그]
docker push [사용자명]/[레포지토리명]:[태그]
🧹 4. 정리 & 최적화
사용하지 않는 리소스 삭제
docker system prune # 중지된 컨테이너, 사용하지 않는 네트워크, dangling 이미지 일괄 삭제
docker volume prune # 사용하지 않는 볼륨 정리
디스크 사용량 확인
docker system df # Docker 디스크 사용량 통계
🚀 5. 고급 활용 팁
컨테이너 간 네트워크 연결
docker network create my-network
docker run --network=my-network [이미지명]
환경 변수 전달
docker run -e "ENV_VAR=value" [이미지명]
# 예: docker run -e "DB_PASSWORD=1234" mysql
볼륨 마운트 (데이터 영속화)
docker run -v [호스트경로]:[컨테이너경로] [이미지명]
# 예: docker run -v /home/data:/app/data nginx
📌 실전 예제: 웹 서버 + DB 연동
# MySQL 컨테이너 실행 (볼륨 마운트)
docker run -d --name mysql-db -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7
# 웹 애플리케이션 실행 (네트워크 연결)
docker run -d --name web-app -p 3000:3000 --link mysql-db:db my-web-app
💡 마무리
이 치트 시트만 숙지해도 80% 이상의 Docker 작업을 빠르게 처리할 수 있습니다! 🎉
더 복잡한 시나리오는 docker-compose
를 활용하는 것이 좋습니다. (다음 포스팅 예정!)
어떤 Docker 명령어가 가장 유용했나요? 댓글로 공유해주세요! 👇
🔗 참고 문서: Docker 공식 문서