Docker는 컨테이너 기술을 기반으로 애플리케이션과 그 실행 환경을 패키징하여 어디서든 동일한 환경에서 실행할 수 있게 해주는 도구입니다.
복잡한 설치 과정을 간소화하고, 개발 환경과 운영 환경의 차이를 줄여주는 장점이 있습니다.
docker --version
여기서는 Python Flask 앱을 Docker로 컨테이너화하는 방법을 알아봅니다.
4.1 Flask 애플리케이션 만들기
아래와 같은 app.py 파일을 생성합니다:
from flask import Flask
app = Flask(name)
@app.route('/')
def home():
return "Hello, Docker!"
if name == 'main':
app.run(host='0.0.0.0', port=5000)
4.2 Dockerfile 작성
Dockerfile은 이미지 생성 규칙을 정의하는 파일입니다. 같은 디렉토리에 아래 내용을 작성합니다:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
4.3 requirements.txt 파일 작성
Flask를 설치하기 위한 종속성 파일을 작성합니다:
flask
4.4 Docker 이미지 빌드
아래 명령어로 Docker 이미지를 생성합니다:
docker build -t flask-app .
4.5 컨테이너 실행
이미지로부터 컨테이너를 생성하고 실행합니다:
docker run -p 5000:5000 flask-app
브라우저에서 http://localhost:5000에 접속하면 “Hello, Docker!” 메시지를 확인할 수 있습니다.
복잡한 애플리케이션에서는 여러 컨테이너를 조합해야 할 때가 많습니다.
이 경우, docker-compose를 사용하면 간단하게 설정할 수 있습니다.
5.1 docker-compose.yml 작성
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
5.2 Compose 명령어 실행
docker-compose up
이 명령어 하나로 애플리케이션 빌드와 실행이 완료됩니다.
Docker를 사용하는 이유
• 환경 일관성: 개발 환경과 배포 환경의 차이를 제거.
• 빠른 배포: 컨테이너 기반으로 신속하게 배포 가능.
• 확장성: 여러 컨테이너를 조합하여 쉽게 확장 가능.
• 경량화: 가상머신보다 가볍고 빠른 실행.
결론
Docker는 현대 소프트웨어 개발에서 필수 도구로 자리 잡았습니다.
위의 예제처럼 간단한 앱부터 시작하여, Docker Compose와 Kubernetes로 확장할 수 있습니다.
꾸준히 연습하며 Docker 생태계에 익숙해지세요!