2023년 3월 9일 목요일

가장 간단한 파이토치 도커 이미지 빌드 및 확장하기

이 글은 가장 간단한 파이토치 도커 이미지 생성하는 방법을 남긴다. 

도커 이미지를 생성하기 전에 고려사항이 있다.
1. 생성할 도커 이미지 내 설치할 패키지, 라이브러리 간 버전 호환성 및 의존성 확인
2. 기존 이미지를 기반으로 확장해 생성할 경우, 기존 이미지의 패키지 버전 호환성 확인
3. 생성할 도커 이미지의 크기 만큼 디스크 용량 확인

이 글은 2번 방식으로 도커 이미지를 생성하는 방법을 간략히 정리한다. 기타, 도커에 대한 설치 등 상세 내용은 다음 링크를 참고한다. 

도커 이미지 확장 빌드 예제
이 경우는 기존 이미지를 이용해 패키지를 설치, 확장 후 새 이미지를 생성한다. 이 경우는 보통 딥러닝 개발 환경 등 설치하기 까다롭고 버전 호환성 문제가 자주 발생하는 경우에 사용한다.

파이토치, CUDA의 특정 버전으로 생성된 이미지를 도커 허브에서 검색한다. 

터미널에서 도커 이미지를 생성할 폴더를 만든다. 그리고 Dockerfile을 편집한다.
mkdir docker
gedit Dockerfile

다음과 같이 도커 명령을 입력한 후 저장한다. 
FROM pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel
MAINTAINER taewook

RUN apt-get update
RUN apt-get install -y libx11-6 libgl1-mesa-glx
RUN pip install torch tensorboard numpy

이때 도커의 레이어 빌드 메커니즘을 고려해, RUN 을 잘 조합해 정의한다. 

참고로, 도커는 레이어 구조로 설치 패키지를 관리하기 때문에, 이미 빌드된 레이어를 재활용해, 도커 빌드 속도를 크게 개선할 수 있다. 아울러, 빌드된 레이어를 재활용해, 빌드될 이미지를 조합할 수 있다.
도커 레이어 구조

터미널에서 다음과 같이 도커 이미지를 빌드한다.
docker bulid --tag docker_image .


레퍼런스

부록: 자주 사용하는 도커 명령어
docker build -t app_program_docker_image .
docker save -o app_program_docker_image.tar cbc
docker system prune -a -f
docker ps -a
docker image rm -f
docker rmi <image id> --force
docker run -v c:/dep_build/input:/app_program/input -v c:/dep_build/output:/app_program/output app_program_docker_image_name conda run -n venv_app python ./bin/user_app.py --input ./input --output ./output

부록: 도커 이미지 빌드 명령어 예시
FROM image_name
ENV PIP_ROOT_USER_ACTION=ignore
ENV PATH /usr/
RUN apt-get install python3-pip -y
RUN apt-get install python3.9
RUN pip install --upgrade pip 
CMD ["bash"]
CMD tail -f /dev/null

댓글 없음:

댓글 쓰기