CentOS 7.9에서 Docker GPU 구성 완벽 가이드

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 정보를 출력합니다.

태그: CentOS docker NVIDIA GPU deep-learning

6월 30일 23:41에 게시됨