VM (Virtual Machine)
Docker (Container)
이미지를 정의하는 설계서(스크립트)
어떤 OS, 어떤 패키지, 어떤 소스를 설치할지 명시
예시:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
docker pull nginx # 이미지 다운로드
docker images # 이미지 목록 확인
docker rmi <image_id> # 이미지 삭제
docker run -d -p 8080:80 nginx # nginx 실행 (-d: 백그라운드, -p: 포트매핑)
docker ps # 실행중인 컨테이너
docker ps -a # 모든 컨테이너
docker stop <id> # 컨테이너 중지
docker rm <id> # 컨테이너 삭제
docker exec -it <id> bash # 컨테이너 내부 접속
docker logs <id> # 로그 확인
여러 컨테이너를 한꺼번에 관리할 수 있는 도구
docker-compose.yml
파일에 서비스 정의
예시 (웹 + DB):
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root
실행:
docker compose up -d
docker compose down
docker run mysql
로 바로 사용