Kinaconの技術ブログ

Ubuntuはじめました。

nvidia-docker2を導入する

f:id:m-oota-711:20180824075049j:plain

nvidia-dockerはコンテナのGPUの開発環境が構築できる。
OpenCV+CUDAを試したかったので今回導入した。

また、CUDA10.0のdockerイメージはnvidia-docker2で提供されているようだったので
nvidia-docker2を導入することとした。




以下、CUDAのdockerイメージ
https://hub.docker.com/r/nvidia/cuda/


nvidia-docker2のインストール方法は以下のサイトを参考にしました。
Installation (version 2.0) · NVIDIA/nvidia-docker Wiki · GitHub




作業環境
f:id:m-oota-711:20181030081427p:plain




作業内容

Nvidiaドライバのインストール

こちらの記事を参考にしていただければ幸いです。
※現在最新版を入手するにはrunファイルを用いる必要があると思われます。


GUIで導入
kinacon.hatenablog.com



aptで導入
kinacon.hatenablog.com



nvidia提供のrunファイルで導入
www.kinacon-blog.work



docker-ceのインストール

docker-ceのインストールはこちらを参考していただければ幸いです。
www.kinacon-blog.work



今回は以下の環境で作業しました。
f:id:m-oota-711:20181030084348p:plain



nvidia-docker2のインストール

導入要件の確認

nvidia-docker2を導入するには以下の要件を満たす必要があります。

要件 Version 確認方法
linux kernel >3.10 sudo uname -a
docker ≧1.12 docker --version
nvidia driver ~=361.93 nvidia-smi
GPU Architecture >2.1 https://developer.nvidia.com/cuda-gpusで確認|

nvidia-docker1.0のアンインストール

docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge nvidia-docker

リポジトリの追加

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 update

インストール

sudo apt install nvidia-docker2
sudo pkill -SIGHUP dockerd

確認

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

Proxy環境

curlのproxy設定
sudo gedit ~/.curlrc


以下を記載する。

proxy-user = "USER:PASSWORD"
proxy = "http://xxx.xxx.co.jp:8080"
docker proxy設定
mkdir -p /etc/systemd/system/docker.service.d
sudo gedit /etc/systemd/system/docker.service.d/http-proxy.conf


以下を記載する。

[Service]
 Environment="HTTP_PROXY=http://USER:PASS@xxx.xxx.co.jp:xxxx/" "HTTPS_PROXY=http://USER:PASS@xxx.xxx.co.jp:xxxx/"


docker デーモンを再起動

sudo systemctl daemon-reload
sudo systemctl restart docker


以上。