IT/기초 지식

[Docker/Linux] Linux환경에서 GPU가 적용된 Docker 컨테이너 만들기

개발자 두더지 2022. 2. 9. 22:05
728x90

 Linux 환경 위에 그대로 GPU를 이용하고자 한다면면 여러가지 드라이브의 설치 및 설정이 복잡하므로, Docker을 사용하는 방법을 추천할 수 있다. 포스팅의 전반적인 순서는 다음과 같다.

  • NVIDIA driver의 설치
  • Docker의 설치
  • NVIDIA container toolkit의 설치
  • 임의의 컨테이너를 생성하여 확인

 

 

NVIDIA driver의 설치


제일 먼저 NVIDIA 드라이브가 설치되어 있는지 확인하자. 

$ nvidia-smi

만약 설치되어 있는 경우, 삭제 후 재설치하고 싶은 경우에만 아래의 커맨드로 삭제한다.

$ sudo apt-get --purge remove nvidia-*
$ sudo apt autoremove

리포지토리를 추가한다.

$ sudo add-apt-repository ppa:graphics-drivers/ppa

아래의 커맨드로 설치 가능한 드라이브를 확인할 수 있다.

$ ubuntu-drivers devices

위 커맨드로 확인한 드라이브중 설치하고 싶은 것을 골라서 설치한다. 이번에는 450을 설치했다.

$ sudo apt-get install nvidia-driver-450

OS의 재실행

$ sudo reboot

 

 

Docker의 설치


설치 가능한 패키지의 목록을 갱신하자.

$ sudo apt-get update

전제 소프트웨어를 설치하자.

$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

Docker의 공식 GPG공개키를 설치하자.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

공개키의 핑거프린트를 확인해보자. 여기서 0EBFCD88는 키 ID이다.

$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

repository를 추가하자.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

설치가능한 패키지 목록을 다시 한 번 더 갱신하자.

$ sudo apt-get update

Docker CE를 설치하자.

$ sudo apt-get install -y docker-ce

이 상태로 계속 docker을 이용하면 매번 sudo를 붙여서 커맨드를 실행해야하므로, sudo를 붙이지 않고 docker 커맨드를 사용할 수 있도록 아래의 일련의 커맨드를 적용하자.

# docker그룹 정보 표시
$ getent group docker

# Docker그룹에 유저를 추가
$ sudo gpasswd -a [username] docker

# 권한을 부여
$ sudo chgrp docker /var/run/docker.sock

# 추가됐는지 확인
$ id [username]

# OS를 재실행
$ sudo reboot

sudo없이 docker 커맨드를 사용가능하지 확인해보자.

$ docker ps

 

 

 

NVIDIA container toolkit의 설치


설치하자.

$ 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 && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker

잘 설치됐는지 아래의 커맨드로 확인하자.

$ nvidia-container-cli info

에러 메시가 출력되지 않았다면 문제없이 설치된 것이다.

 

 

임의의 컨테이너를 생성하여 확인


임의의 nvidia 이미지를 pull하자.

$ docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04

docker상에 NVIDIA 드라이브가 인식되어 있는지 확인하기 위해 아래의 커맨드를 실행해보자.

GPU정보가 나온다면 OK이다.

$ docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 nvidia-smi

참고자료

https://qiita.com/GandT/items/a518c2b1e0625bf7f178

https://qiita.com/tatsuya11bbs/items/3af03e704812b6c89965#4-docker%E3%81%A7gpu%E3%82%92%E4%BD%BF%E3%81%86

728x90