Docker는 컨테이너 기반 가상화 기술을 제공하는 플랫폼으로, 애플리케이션과 그 실행 환경을 컨테이너(Container)라는 독립된 단위로 패키징하여 실행할 수 있게 합니다. 이를 통해 일관된 개발 환경, 배포 자동화, 효율적인 리소스 사용 등이 가능합니다.
🛠️ Docker의 핵심 개념
- 이미지(Image)
- 컨테이너를 실행하기 위한 템플릿 역할을 함
- 애플리케이션, 라이브러리, 의존성 등을 포함하여 동일한 환경을 유지
Dockerfile
을 사용하여 직접 제작 가능
- 컨테이너(Container)
- 이미지를 기반으로 실행되는 독립적인 애플리케이션 환경
- 서로 격리된 상태에서 실행되며, 가볍고 빠름
docker run
명령으로 생성하고 실행 가능
- Dockerfile
- Docker 이미지를 자동으로 빌드할 수 있는 스크립트 파일
- 애플리케이션의 실행 환경을 코드로 정의할 수 있음
🚀 Docker의 특징 및 장점
✅ 경량성 → 가상머신(VM)보다 적은 리소스를 사용
✅ 빠른 배포 → 컨테이너를 몇 초 만에 실행 가능
✅ 일관된 환경 → 개발/테스트/운영 환경 차이를 제거
✅ 이식성 → 어떤 OS에서도 동일한 환경으로 실행
✅ 확장성 → 여러 개의 컨테이너를 쉽게 관리 가능
📌 Docker 이미지 생성 예제
아래 Dockerfile
을 사용하여 간단한 Python 웹 서버 이미지를 만들어보겠습니다.
# 베이스 이미지 선택 (Python 3.9 사용)
FROM python:3.9
# 작업 디렉토리 설정
WORKDIR /app
# 필요한 파일 복사
COPY app.py .
# Flask 설치
RUN pip install flask
# 컨테이너가 실행될 때 실행할 명령어
CMD ["python", "app.py"]
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)
🔧 이미지 빌드 및 컨테이너 실행
- 이미지 빌드sh복사편집
docker build -t my-python-app .
- 컨테이너 실행sh복사편집
docker run -d -p 5000:5000 my-python-app
- 웹 브라우저에서 확인
http://localhost:5000
접속 → “Hello, Docker!” 메시지 출력
🛠️ Docker 기본 명령어
명령어 | 설명 |
---|---|
docker ps | 실행 중인 컨테이너 목록 조회 |
docker images | 로컬에 저장된 이미지 목록 조회 |
docker pull [이미지] | Docker Hub에서 이미지 다운로드 |
docker build -t [이미지명] . | 현재 디렉토리의 Dockerfile 을 기반으로 이미지 빌드 |
docker run -d -p 8080:80 [이미지명] | 컨테이너 실행 (백그라운드 모드) |
docker stop [컨테이너ID] | 컨테이너 중지 |
docker rm [컨테이너ID] | 컨테이너 삭제 |
docker rmi [이미지명] | 이미지 삭제 |
🎯 Docker 사용 사례
🔹 개발 환경 통합 → 팀원 간 동일한 개발 환경 유지
🔹 CI/CD 파이프라인 → 배포 자동화 및 운영환경 일관성 유지
🔹 마이크로서비스 아키텍처(MSA) → 여러 개의 독립적인 서비스 관리
🔹 클라우드 환경 최적화 → AWS, GCP, Azure 등의 컨테이너 서비스와 연동