드레스룸 시스템행거 인테리어

반응형

nvidia dorker 설치

 

도커 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 

 

 

 

nvidia-docker는 docker에서 GPU를 사용할 수 있게 만든 도커라고 생각하면 된다.

사실 nvidia-docker를 설치하게 되면 docker 명령어도 사용이 되고 nvidia-docker 명령어도 사용된다.

nvidia-docker 설치 후 docker 명령어에서도 nvidia gpu를 사용할 방법은 있어서 다른 점을 정확히는 모르겠다.

 

다른 블로그의 글을 보아하니 docker 구버전일때와 docker 19.03 이상일 때 실행 방법이 다른 것 같다!!! 

 

 

 

docker image file은 dockerfile로 작성이 되고 그 이미지를 실행시키게 되면 contairner가 생성이 됩니다.

같은 image를 여려명의 유저가 계속해서 실행시키고 끄고 하게 되면 복수의 container가 생성됨.

 

 

 

root@ubuntu:~# nvidia-smi
Tue Jun 23 03:25:33 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:86:00.0 Off |                  N/A |
| 29%   38C    P0     1W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

기본적으로 nvidia-driver가 설치 된 상태에서 nvidia-docker를 설치 진행해 보겠다.

 

기존의 사용하던 오래된 docker가 있다면 삭제 후 설치 

# apt-get remove docker docker-engine docker.io

 

 

패키지 저장소를 추가해주고 간단하게 설치하면 된다.

기본적으로 ubuntu16.04 나 ubuntu18.04 모두 아래와 같은 방법으로 설치하면 된다.

 

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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 nvidia-docker2

 

 저장소 추가 후 nvidia-docker2를 설치하게 되면 dependency에 물려 있는 패키지들도 알아서 샤샤샥~ 

root@ubuntu:~# apt-get install nvidia-docker2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  bridge-utils cgroupfs-mount containerd docker.io libnvidia-container-tools libnvidia-container1 libseccomp2 nvidia-container-runtime nvidia-container-toolkit pigz runc ubuntu-fan
Suggested packages:
  ifupdown aufs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils
The following NEW packages will be installed:
  bridge-utils cgroupfs-mount containerd docker.io libnvidia-container-tools libnvidia-container1 nvidia-container-runtime nvidia-container-toolkit nvidia-docker2 pigz runc ubuntu-fan
The following packages will be upgraded:
  libseccomp2
1 upgraded, 12 newly installed, 0 to remove and 238 not upgraded.
Need to get 65.2 MB of archives.
After this operation, 324 MB of additional disk space will be used.
Do you want to continue? [Y/n]

 

여기까지 하면 설치가 완료 됐다. 확인해보자~!

 

root@ubuntu:~# docker version
Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Fri Feb 28 23:45:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.6
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       369ce74a3c
  Built:            Wed Feb 19 01:06:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu1~18.04.2
  GitCommit:
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:
 docker-init:
  Version:          0.18.0
  GitCommit:
root@ubuntu:~# nvidia-docker version
NVIDIA Docker: 2.3.0
Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Fri Feb 28 23:45:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.6
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       369ce74a3c
  Built:            Wed Feb 19 01:06:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu1~18.04.2
  GitCommit:
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:
 docker-init:
  Version:          0.18.0
  GitCommit:

 

 

docker가 정상적으로 설치되어 사용되는지 마지막으로 아래와 같이 확인해 보면 기본적인 설치가 끝난 것이다.

root@ubuntu:~# docker run --runtime=nvidia --rm nvidia/cuda:10.0-base nvidia-smi
Unable to find image 'nvidia/cuda:10.0-base' locally
10.0-base: Pulling from nvidia/cuda
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
d8f1569ddae6: Pull complete
de5a2c57c41d: Pull complete
ea6f04a00543: Pull complete
Digest: sha256:e6e1001f286d084f8a3aea991afbcfe92cd389ad1f4883491d43631f152f175e
Status: Downloaded newer image for nvidia/cuda:10.0-base
Tue Jun 23 07:43:47 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:86:00.0 Off |                  N/A |
| 29%   38C    P0     1W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

 

docker의 기본 명령어

docker run [OPTIONS] IMAGE[:TAG|DIGEST] [COMMAND] [ARG...]

 

옵션 설명
-d detached mode 백그라운 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리 연결 (mount)
-e 컨테이너 내에서 사용할 환경변수 설정
-name 컨테이너 이름 설정
-rm 프로세스 종료시 사용중이던 컨테이너 제거
-it 터미널 입력을 위한 옵션
-link 컨테이너 연결 [컨테이너명:별칭]

 


 

 

root@ubuntu:~# NV_GPU=0 nvidia-docker run -it  xxxx/tf1.13.1:1.0
root@cf928cdae859:~# nvidia-smi
Tue Jun 23 08:56:00 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.59       Driver Version: 440.59       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:86:00.0 Off |                  N/A |
| 29%   37C    P0    21W / 250W |      0MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

 

NV_GPU를 통해 GPU number로 gpu 할당하여 사용하면 된다.

위에 이미지는 dockerbuild로 허접하게 test용으로 만든 image라 xxxx로 계정을 가렸다..ㅎㅎ

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band