Docker는 컨테이너 기반 가상화 기술을 제공하는 플랫폼으로, 애플리케이션과 그 실행 환경을 컨테이너(Container)라는 독립된 단위로 패키징하여 실행할 수 있게 합니다. 이를 통해 일관된 개발 환경, 배포 자동화, 효율적인 리소스 사용 등이 가능합니다.
Dockerfile
을 사용하여 직접 제작 가능docker run
명령으로 생성하고 실행 가능✅ 경량성 → 가상머신(VM)보다 적은 리소스를 사용
✅ 빠른 배포 → 컨테이너를 몇 초 만에 실행 가능
✅ 일관된 환경 → 개발/테스트/운영 환경 차이를 제거
✅ 이식성 → 어떤 OS에서도 동일한 환경으로 실행
✅ 확장성 → 여러 개의 컨테이너를 쉽게 관리 가능
아래 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)
docker build -t my-python-app .
docker run -d -p 5000:5000 my-python-app
http://localhost:5000
접속 → “Hello, 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 [이미지명] | 이미지 삭제 |
🔹 개발 환경 통합 → 팀원 간 동일한 개발 환경 유지
🔹 CI/CD 파이프라인 → 배포 자동화 및 운영환경 일관성 유지
🔹 마이크로서비스 아키텍처(MSA) → 여러 개의 독립적인 서비스 관리
🔹 클라우드 환경 최적화 → AWS, GCP, Azure 등의 컨테이너 서비스와 연동
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…