피드로 돌아가기
Dev.toDevOps
원문 읽기
Docker for Developers: Essential Commands Guide (2026)
Docker 초심자를 위해 실제 사용 빈도가 높은 명령어들을 체계적으로 정리하고 Dockerfile 작성 시 이미지 크기 및 보안을 개선하는 패턴 제시
AI 요약
Context
Docker 커맨드 라인 인터페이스는 수십 개의 서브커맨드와 수백 개의 플래그로 인해 초심자가 접근하기 어렵다. 개발자들이 실제로 필요한 명령어와 사용 시점을 명확히 구분하기 어렵다.
Technical Solution
- 이미지 관리:
docker pull,docker build,docker tag,docker push명령어로 이미지 생성 및 배포 파이프라인 구성 - 컨테이너 실행:
-d(백그라운드),-p(포트 매핑),-v(볼륨 마운트),-e(환경 변수) 플래그 조합으로 다양한 실행 시나리오 구현 - 컨테이너 검사:
docker inspect,docker logs,docker stats로 실행 중인 컨테이너의 상태, 로그, 리소스 사용량 확인 - Dockerfile 최적화: 변경 빈도별 계층 정렬 및
RUN명령어 병합으로 빌드 캐시 활용 및 이미지 레이어 수 감소 - 멀티 스테이지 빌드: 빌드 스테이지와 프로덕션 스테이지 분리로 빌드 도구 제외된 최소 크기 이미지 생성
- 로컬 개발 워크플로우: 볼륨 마운트(
-v)로 코드 변경 감지 시 자동 리로드 구현 - 시스템 정리:
docker system prune및docker image prune으로 미사용 컨테이너, 이미지, 캐시 제거
Key Takeaway
Docker 명령어의 핵심은 이미지(블루프린트)와 컨테이너(인스턴스) 간의 개념적 구분을 이해하는 것이며, 이를 바탕으로 빌드 계층 순서 최적화와 멀티 스테이지 패턴을 적용하면 프로덕션 환경에서 보안성과 배포 효율성을 동시에 확보할 수 있다.
실천 포인트
Node.js 기반 애플리케이션 개발 환경에서 로컬 개발 시 `-v $(pwd):/app -v /app/node_modules` 플래그로 소스 코드 디렉토리는 마운트하되 node_modules는 컨테이너 내부 캐시로 유지하면, 코드 변경 즉시 반영과 의존성 재설치 오버헤드 방지를 동시에 달성할 수 있다. 또한 프로덕션 Dockerfile에서 빌드 스테이지(Node 전체)와 실행 스테이지(alpine 경량 이미지)를 분리하면 최종 이미지에서 빌드 도구들을 완전히 제외할 수 있다.