호스트에 Docker 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## Ubuntu의 경우
sudo apt update                # 시스템 패키지 업데이트
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # gpg 키 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 저장소 추가. 아키텍처가 arm64일 경우 [arch=arm64]로 변경
sudo apt update                # 시스템 패키지 업데이트

## CentOS의 경우
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
sudo yum install docker-ce
sudo yum install docker-ce-cli
sudo yum install containerd.io

## Rocky Linux의 경우
dnf install dnf-utils         # 유틸 패키지 설치
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo                # 패키지 저장소 추가
dnf install docker-ce         # 도커 설치

(선택) Docker Compose 설치

바이너리를 직접 다운로드 받는 방법과, 패키지 관리 툴을 통한 설치 방법이 있습니다.

1번 방법. 바이너리를 직접 다운로드

1
2
3
4
5
6
7
8
# 바이너리 다운로드
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 설치 확인 (버전 확인)
docker-compose --version    # 설치 확인
>> Docker Compose version v2.29.7

2번 방법. 패키지 관리 툴을 통한 설치

1
2
3
4
5
6
7
# Ubuntu
sudo apt update
sudo apt install docker-compose

# 설치 확인 (버전 확인)
docker-compose --version    # 설치 확인
>> Docker Compose version v2.29.7

호스트에 Nvidia 드라이버 및 Toolkit 설치

(1) 호스트에 Nvidia 드라이버 설치

1번 방법. 패키지 관리 툴을 통한 설치

1
2
3
4
5
6
7
# PPA(Personal Package Archive) 추가
sudo apt update
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

# 설치 가능한 Nvidia 드라이버 확인
ubuntu-drivers devices
1
2
3
4
5
# 자동으로 권장 버전을 설치할 경우
sudo ubuntu-drivers autoinstall

# 수동으로 특정 버전을 설치할 경우
sudo apt install nvidia-driver-535
1
2
# 재부팅
sudo reboot

2번 방법. Nvidia 홈페이지에서 드라이버를 다운로드받아 설치

개발에 필요한 CUDA 버전, torch 버전등을 확인하고, 최종적으로 현재 그래픽카드에서 설치할 수 있는 최적의 nvidia 드라이버 버전을 확인하여 다운로드 합니다.

CUDA-드라이버 버전 호환성 확인
torch - cuda 버전 호환성 확인
nvidia 드라이버 다운로드

1
2
3
4
5
6
7
8
# 드라이버 다운로드
wget https://www.nvidia.com/ko-kr/drivers/details/<드라이버번호>

# 설치파일에 실행 권한 부여
chmod 111 ./NVIDIA-Linux-<아키텍처>-<버전>.run

# 실행
./NVIDIA-Linux-<아키텍처>-<버전>.run

(2) Nidia 드라이버 설치 완료 확인

1
2
# 드라이버 상태 출력
nvidia-smi

![[Pasted image 20240114133521.png]]

(3) 호스트에 Nvidia-CUDA-Toolkit 설치

nvidia-cuda-toolkitCUDA(Compute Unified Device Architecture) 개발 환경을 제공하여, GPU에서 병렬 계산을 수행할 수 있는 도구입니다.

1
2
# Nvidia 툴킷 설치
apt install nvidia-cuda-toolkit

(4) 호스트에 nvidia-docker2 설치

nvidia-docker2Docker 컨테이너에서 GPU를 사용할 수 있도록 해주는 패키지입니다.

1
2
3
4
5
6
7
8
# Nvidia 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

# nvidia-docker2 설치
sudo apt-get update
sudo apt-get install -y nvidia-docker2

(5) docker daemon 설정 파일에 runtime 추가

1
nano /etc/docker/daemon.json
1
2
3
4
5
6
{ "runtimes": 
     "nvidia": {
         "path": "nvidia-container-runtime",
         "runtimeArgs": []
         }
}

(6) docker 서비스 재시작

1
sudo systemctl restart doker

도커 이미지 준비

사용할 도커 이미지를 준비합니다. 기본적으로 nvidia에서 제공하는 CUDA 도커 이미지를 사용하기를 권장합니다.

Nvidia/Cuda docker registry

도커 컨테이너 실행

1번 방법. docker run 으로 실행할 경우

1
2
# 모든 GPU를 사용할 경우
docker run --gpus all -dit <이미지:태그> bash
1
2
# 특정 GPU만 사용할 경우
docker run --gpus '"device=0"' -dit <이미지:태그> bash

2번 방법. docker compose up 으로 실행할 경우

1
2
3
4
5
6
7
8
9
version: '3.8'
services:
  <서비스명>:
    image: <이미지명:태그>
    runtime: nvidia  # 컨테이너가 NVIDIA GPU를 사용할 수 있게 설정
    environment:
      - NVIDIA_VISIBLE_DEVICES=all  # 모든 GPU를 사용
      - NVIDIA_DRIVER_CAPABILITIES=compute,utility  # 컨테이너가 GPU에서 사용할 수 있는 기능 지정
    command: bash