Docker

Docker slim 이미지

끈끈 2023. 6. 2. 02:06
docker 이미지

 

  • docker 이미지는 용량 최적화를 위해 컨테이너 실행에 필요한 최소한의 파일만 들어있는 slim 이미지를 지원하고 있다
  • 용량이 작은 이미지를 사용할 때는 외부 패키지를 설치할 때 필요한 의존성 파일들이 존재하지 않아 에러가 발생할 수 있음

 

slim 이미지의 종류와 특징

 

기본 python 이미지

 

 

python alpine 이미지(가장 작은 용량)

 

 

docker hub 이미지 페이지의 tags에서 확인 가능

 

 

이미지의 태그별 특징

 

  • buster, jessie, stretch
    • debian에서 만든 linux를 기반으로 만들어진 이미지
    • buster, jessie, stretch는 os의 codename
    • python:3.8과 python:3.8-buster는 동일함 (약 300~350mb)
  • slim
    • 실행에 필요한 환경만 만들어둔 이미지
    • 이미지가 기본 이미지에 비해서는 작다 (약 40~50mb)
    • 보통 python 실행환경에서 가장 많이 쓰이는 이미지
  • alpine
    • 용량이 작고, 보안에 집중한 alpine-linux 기반으로 만들어진 이미지
    • 보통 이미지들 중에서 가장 작다는 특징 (약 15~20mb)
    • python 기준, pip install을 할 때 불리한 점이 있다

 

backend/Dockerfile

# python 3.10.8-slim버전 이미지를 사용해 빌드
FROM python:3.10.8-slim

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir /app/
WORKDIR /app/

# slim 이미지에서 postgresql 패키지를 설치하기 위해 필요 명령어 추가
RUN apt update && apt install libpq-dev gcc -y

COPY ./django/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install gunicorn psycopg2

 

 

docker-compose.yml

 

sudo docker compose up -d --build
sudo docker compose logs -f

 

 

slim 이미지를 사용하기 전과 용량을 비교

 

sudo docker compose images
sudo docker image prune -a