도커(Docker)
컨테이너(Container) 기반 가상화 기술을 제공하는 플랫폼
애플리케이션과 해당 애플리케이션이 실행되는 환경을 함께 패키징하여, 어디서든 동일한 환경에서 실행할 수 있도록 만들어준다.
• 가상화 기술: 하드웨어 가상화가 아닌 운영체제 수준의 가상화
• 컨테이너: 독립된 환경에서 실행되며, 가볍고 빠르게 배포 가능
• 이식성: “한번 빌드하면 어디서든 실행 가능”이라는 장점을 제공
도커파일(Dockerfile)
도커 이미지를 생성하기 위한 스크립트 파일
• 특정 애플리케이션 환경을 정의하기 위한 명령어들을 포함
• 빌드 과정 자동화
도커파일의 구조
• FROM: 베이스 이미지 지정 (예: FROM python:3.10-slim)
• RUN: 쉘 명령어 실행 (예: RUN apt-get update && apt-get install -y ...)
• COPY 또는 ADD: 파일 복사
• CMD 또는 ENTRYPOINT: 컨테이너 시작 시 실행할 명령어 지정
# Python 베이스 이미지 사용
FROM python:3.10-slim
# 작업 디렉토리 설정
WORKDIR /app
# 소스 파일 복사
COPY . /app
# 의존성 설치
RUN pip install -r requirements.txt
# 애플리케이션 실행
CMD ["python", "app.py"]
디렉토리 구조
project/
├── Dockerfile # 도커파일
├── app.py # 애플리케이션 소스 코드
├── requirements.txt # Python 의존성 파일
└── static/ # 정적 파일
도커컴포즈(Docker Compose)
여러 컨테이너를 정의하고 함께 실행하기 위한 도구
• 복잡한 애플리케이션(여러 컨테이너 필요)을 쉽게 관리
• 하나의 docker-compose.yml 파일로 여러 컨테이너를 정의
예시 파일 (docker-compose.yml):
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
environment:
- FLASK_ENV=development
redis:
image: "redis:alpine"
• services: 컨테이너 목록 정의
• web, redis: 각각의 컨테이너 이름
• build: 도커파일 경로
• ports: 호스트와 컨테이너 간 포트 매핑
• volumes: 파일 공유
• docker-compose up: 컨테이너 시작
• docker-compose down: 컨테이너 정리
도커허브(Docker Hub)
도커 이미지를 공유할 수 있는 온라인 저장소 플랫폼
• 도커 이미지를 업로드, 공유
• 인기 있는 베이스 이미지들이 제공됨 (예: nginx, node, python 등)
• docker pull <이미지 이름>: 이미지 다운로드
• docker push <이미지 이름>: 이미지 업로드
• docker login: 허브에 로그인
사용 예시
• docker pull python:3.10
Python 3.10 이미지 다운로드
• docker push myapp:latest
myapp 이미지를 도커허브에 업로드
'Z.PROJ' 카테고리의 다른 글
Virtual Machines(VMs) / Containers (2) | 2024.12.15 |
---|