[Docker] cuda 빌드 환경 구성
Docker로 GPU를 사용하는 컨테이너를 올리려면 몇가지 준비가 필요하다.
우선 호스트 머신에도 그래픽 드라이버가 먼저 설치되어있어야 한다.
관련 포스트
https://blog.naver.com/sssang97/223867488688
GPU 플래그
그리고 docker를 실행할때 gpu 옵션을 줘야 하는데
docker용 gpu 플러그인이 없으면 동작하지 않는다.
이 경우에는 엔비디아용 docker를 설치해야 한다.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 패키지 목록 업데이트
sudo apt-get update
# NVIDIA Container Toolkit 설치
sudo apt-get install -y nvidia-docker2
# Docker 서비스 재시작
sudo systemctl restart docker

이미지 선택
Docker 이미지도 되도록 cuda용 이미지를 쓰는게 간편하다.
버전에 맞춰서 nvidia/cuda:12.8.0-base-ubuntu22.04 같은걸 가져가다 쓰도록 하자

Docker 전용 종속성
Python 환경 자체가 종속성이 지옥인 경우가 많은데, 이런 ML 관련 환경이 들어가면 더 끔찍해진다.
opencv-python만 해도 그렇다. 이거 Docker에 말아올리려면 공유 라이브러리를 덕지덕지 발라야하는데, 이런건 종종 Docker용 경량 모듈이 지원되기도 한다. opencv-python의 경우에는 opencv-python-headless를 사용할 수 있다.