개발환경구축) ubuntu 16.04 nvidia-docker install &manual

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. VM 처럼 개발환경을 가상화 하는 역활을 하지만 OS를 만들지 않고 프로세스를 격리합니다. 때문에 빠른 성능을 보입니다. 

아래는 도커에 대한 간략한 설명과 사용법을 간단히 정리해본 ppt입니다. 예제로 vnc 서버를 만드는 튜토리얼이 있습니다. 이것으로는 부족할 수도 있으니 구글 검색등으로 자세한 사용법을 익히는것을 추천드리겠습니다.

도커의 기본 사용법에 대해서는 이 포스팅에서 따로 언급하지 않겠습니다.

Server-Docker-manual

1. Installing Docker Engine

$ sudo wget -qO- https://get.docker.com/ | sh
$ sudo usermod -aG docker $USER
$ docker run hello-world

2. Installing Docker Compose

$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo docker-compose --version
docker-compose version 1.21.2, build a133471

여기까지 하면 도커의 설치는 끝입니다. 그러나 우리는 nvidia docker 를 사용할 것이기 때문에 추가적인 작업이 필요합니다.

일딴 NVIDIA drivers 를 설치하여 준다. 아래는 Prerequisites이다.  fermi가 아마 4세대인걸로 알고있는데 이 이후의 gpu와 ubuntu 16.04 위 방법으로 도커를 설치하였다면 NVIDIA drivers  만 설치하면 된다.

  1. GNU/Linux x86_64 with kernel version > 3.10
  2. Docker >= 1.12
  3. NVIDIA GPU with Architecture > Fermi (2.1)
  4. NVIDIA drivers ~= 361.93 (untested on older versions)

이제 설치를 한다.

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 
sudo pkill -SIGHUP dockerd
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

위 방법으로 사용하면 된다. 아래는 사용예제이다. 

nvidia-docker run -it --name mycuda  --runtime=nvidia  --ipc=host  -e DISPLAY=$DISPLAY  -v /tmp/.X11-unix:/tmp/.X11-unix  -v /data:/data  -p 80:80 -p 443:443 -p 8097:8097 -p 8080:8080 -p 6000:6000 --restart="always" nvidia/cuda:9.2-cudnn7-runtime-ubuntu16.04  bash

3. 유용한 option

특정 gpu 할당

만약 docker 에 특정 gpu를 할당하고 싶을시에는 다음과 같은 명령어를 사용하면 된다.

# Running nvidia-docker isolating specific GPUs by index
NV_GPU='0,1' nvidia-docker <docker-options> <docker-command> <docker-args>
# Running nvidia-docker isolating specific GPUs by UUID
NV_GPU='GPU-836c0c09,GPU-b78a60a' nvidia-docker <docker-options> <docker-command> <docker-args>

이때 gpu id 는 nvidia-smi를 통해서 확인이 가능하다. 

특정 cpu 할당

cpuset를 통하여 가능하다.

docker run --name example --cpuset-cpus=0,1 

특정 port 할당을 하지않고 host의 네트워크 사용하기

docker 를 사용중 port가 연결되지 않아 문제가 생길때가 있다. 만약 당신이 예상하지 못한 포트가 필요하다면 당황스러울수 있다. 이럴때는 아래의 옵션을 사용한다.

docker run --name example --net=host

host의 network를 사용하기 때문에 포트를 열지 않아도 된다.

Xwindows  사용하기

vnc 서버를 만들어 사용한다면 문제가 없지만 그렇지 않고 xwindows를 이용하여 컨테이너 내부의 프로그램을 GUI로 이용하고 싶을때는 아래와 같은 방법을 사용하면 된다.

docker run   -e DISPLAY=$DISPLAY  -v /tmp/.X11-unix:/tmp/.X11-unix 

딥러닝 프레임워크 컨테이너 다운

댓글을 남겨주세요~