CentOS 7.9에서 Docker GPU 사용하기
CentOS 7.9 환경에서 Docker 컨테이너가 NVIDIA GPU를 활용할 수 있도록 구성하는 과정을 단계별로 설명합니다. 이 설정은 딥러닝 모델 학습이나 GPU 가속이 필요한 작업에 필수적입니다.
Docker 엔진 설치
먼저 Docker를 시스템에 설치해야 합니다. 다음 명령어를 순서대로 실행하세요.
# 필수 의존성 패키지 설치
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Docker 공식 YUM 저장소 추가
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Docker CE 및 관련 컴포넌트 설치
sudo yum install -y docker-ce docker-ce-cli containerd.io
# Docker 서비스 활성화 및 시작
sudo systemctl enable docker --now
설치 후 버전 확인:
docker --version
Docker version 24.0.0, build 12345
Docker Compose 설치
다중 컨테이너 관리를 위해 Docker Compose를 설치합니다.
# Docker Compose 바이너리 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
# 설치 확인
docker-compose --version
NVIDIA 드라이버 설치
GPU를 활용하려면 먼저 시스템에 NVIDIA 드라이버를 설치해야 합니다.
개발 환경 준비
# Anaconda 다운로드 및 설치
wget https://repo.continuum.io/archive/Anaconda3-2023.03-Linux-x86_64.sh
bash Anaconda3-2023.03-Linux-x86_64.sh
# NVIDIA GPU 감지 확인
if lspci | grep -i nvidia &> /dev/null; then
echo "NVIDIA GPU가 감지되었습니다"
else
echo "NVIDIA GPU를 찾을 수 없습니다"
exit 1
fi
# 커널 개발 도구 설치
sudo yum install -y kernel-devel-$(uname -r) gcc make
드라이버 설치 과정
# 커널 및 소스 버전 확인
kernel_image=$(ls /boot | grep vmlinuz | tail -1)
kernel_source=$(rpm -qa | grep kernel-devel | tail -1)
echo "커널 이미지: $kernel_image"
echo "커널 소스: $kernel_source"
# NVIDIA 드라이버 다운로드 (Tesla 버전 예시)
wget https://us.download.nvidia.com/tesla/525.60.13/NVIDIA-Linux-x86_64-525.60.13.run
# Nouveau 드라이버 비활성화
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
# initramfs 재구성
sudo dracut --force
# 텍스트 모드로 변경 및 재부팅
sudo systemctl set-default multi-user.target
sudo reboot
드라이버 설치 실행
# Nouveau 비활성화 확인
lsmod | grep nouveau
# 드라이버 설치 파일 실행 권한 부여
chmod +x NVIDIA-Linux-x86_64-525.60.13.run
# 드라이버 설치 (커널 소스 경로指定)
sudo ./NVIDIA-Linux-x86_64-525.60.13.run --kernel-source-path=/usr/src/kernels/$(uname -r)/ --silent
# GPU 상태 확인
nvidia-smi
NVIDIA Container Runtime 구성
Docker가 GPU에 접근할 수 있도록 NVIDIA Container Runtime을 설치하고 설정합니다.
# NVIDIA Container Runtime 저장소 추가
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -sL https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
# 패키지 설치
sudo yum install -y nvidia-container-runtime
# Docker 데몬 설정 파일 수정
sudo tee /etc/docker/daemon.json << 'EOF'
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia",
"registry-mirrors": ["https://mirror.gcr.io"]
}
EOF
# Docker 재시작
sudo systemctl restart docker
# 구성 확인
docker info | grep -A 10 "Runtimes"
구성이 성공적으로 완료되면 다음과 같은 출력이 표시됩니다:
Runtimes: nvidia runc
Default Runtime: nvidia
docker-compose.yml에서 GPU 사용
docker-compose를 사용할 때 GPU를 할당하려면 다음과 같이 설정합니다:
version: '3.8'
services:
gpu-app:
image: nvidia/cuda:11.8.0-runtime-ubuntu22.04
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu, compute]
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility,display
command: nvidia-smi
GPU 컨테이너 테스트
구성이 올바르게 작동하는지 확인합니다:
# GPU 지원 컨테이너 실행
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
# 특정 GPU만 사용
docker run --rm --gpus '"device=0"' nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
# docker-compose로 테스트
docker-compose up --build
정상적으로 구성되면 nvidia-smi 명령어가 GPU 정보를 출력합니다.