이번 글에서는 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. 이미지 빌드와 실행
이미지 빌드
- Dockerfile 작성:
- 필요한 설정 및 명령어 작성.
- 이미지 빌드
docker build -t my-image .
컨테이너 실행
- 컨테이너 실행
docker run -d -p 3000:3000 my-image
- 옵션 활용:
- -d: 백그라운드 실행.
- -p: 포트를 외부에 노출.
5. 실습 단계 요약
- Dockerfile 작성
FROM node:16-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
- 이미지 빌드
docker build -t my-node-app .
- 컨테이너 실행
docker run -d -p 3000:3000 my-node-app
6. Docker 활용 팁
- 레이어 캐싱 활용: COPY와 RUN 순서를 최적화하여 이미지 빌드 속도 개선.
- 가벼운 베이스 이미지: alpine과 같은 경량 이미지를 사용하여 이미지 크기 감소.
Docker를 활용한 애플리케이션 배포를 이해하기 위해 Docker의 핵심 개념과 명령어를 정리해 보았습니다. 😁
'카카오 부트캠프 > 내용 정리' 카테고리의 다른 글
Elastic Beanstalk 배포 에러 및 문제 해결 보고서 (1) | 2024.12.15 |
---|---|
Dockerfile 기초 문법 이해 (0) | 2024.12.12 |
Docker 이미지 빌드 중 발생한 에러와 해결 방법 정리 (2) | 2024.12.09 |
토스에서 Gateway를 어떻게 활용할까? (2) | 2024.12.05 |
API Gateway와 Load Balancer (3) | 2024.12.04 |