Z.PROJ

Docker

최 수빈 2024. 12. 24. 03:05

 

도커(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