카카오 부트캠프/내용 정리

Docker 기본 개념과 실습 정리

BCSJH 2024. 12. 11. 01:07

이번 글에서는 Docker의 주요 특징, 명령어, 그리고 실제 Dockerfile 작성 및 이미지를 빌드하는 과정에 대해 살펴보겠습니다.


1. Why Docker?

Docker는 컨테이너 기술을 활용하여 애플리케이션을 더 효율적이고 일관되게 배포할 수 있도록 도와줍니다.

Docker의 주요 특징

  • 일관성: 환경별로 애플리케이션이 동일하게 작동하도록 보장.
  • 경량화: 가상머신보다 가볍고 빠르게 실행.
  • 확장성: 컨테이너를 클러스터링하여 확장 가능.
  • 이식성: 어디에서나 동일한 환경에서 실행 가능.

Docker를 사용하는 이유

  • 애플리케이션 실행 환경을 별도로 설정할 필요 없음.
  • 로컬 개발 환경과 프로덕션 환경의 일관성을 유지.
  • 새로운 서비스를 빠르게 배포 및 테스트 가능.

2. Docker 주요 명령어

Docker를 사용하기 위해 자주 쓰이는 명령어를 정리했습니다.

컨테이너 실행 및 관리

  • docker run: 새로운 컨테이너를 실행.
  • docker ps: 실행 중인 컨테이너 목록 확인.
  • docker stop <컨테이너>: 실행 중인 컨테이너 중지.
  • docker rm <컨테이너>: 중지된 컨테이너 삭제.

이미지 관리

  • docker images: 로컬에 저장된 Docker 이미지 확인.
  • docker build: Dockerfile을 기반으로 이미지 빌드.
  • docker rmi <이미지>: 로컬 이미지 삭제.

3. Dockerfile 작성법

Dockerfile 주요 지시어

  • FROM: 기본 이미지 지정 (예: node:16-alpine).
  • WORKDIR: 작업 디렉토리 설정.
  • COPY: 로컬 파일을 이미지로 복사.
  • RUN: 이미지 빌드 시 실행할 명령어.
  • CMD: 컨테이너 실행 시 기본으로 실행할 명령어.

CMD vs ENTRYPOINT

  • CMD: 기본 명령을 정의하지만, 사용자 명령어로 덮어쓸 수 있음.
  • ENTRYPOINT: 고정된 명령 실행, 추가 인수를 붙여 실행.

4. 이미지 빌드와 실행

이미지 빌드

  1. Dockerfile 작성:
    • 필요한 설정 및 명령어 작성.
  2. 이미지 빌드
    docker build -t my-image .
     

컨테이너 실행

  1. 컨테이너 실행
    docker run -d -p 3000:3000 my-image
     
  2. 옵션 활용:
    • -d: 백그라운드 실행.
    • -p: 포트를 외부에 노출.

5. 실습 단계 요약

  1. Dockerfile 작성
    FROM node:16-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["npm", "start"]
  2. 이미지 빌드
    docker build -t my-node-app .
  3. 컨테이너 실행
    docker run -d -p 3000:3000 my-node-app

6. Docker 활용 팁

  • 레이어 캐싱 활용: COPY와 RUN 순서를 최적화하여 이미지 빌드 속도 개선.
  • 가벼운 베이스 이미지: alpine과 같은 경량 이미지를 사용하여 이미지 크기 감소.

Docker를 활용한 애플리케이션 배포를 이해하기 위해 Docker의 핵심 개념과 명령어를 정리해 보았습니다. 😁