安裝nvidia-docker2
為什麼要用nvidia-docker2?
一個淺顯的原因是, nvidia-docker
已經被官方廢棄了。 最大的原因是, nvidia-docker
作為Docker的一個包裝,需要執行一個獨立的daemon,與Docker的生態不能很好地相容。 比如, docker-compose
、 docker swarm
與Kubernetes,都不能很好的和 nvidia-docker
一起工作。
nvidia-docker2
解決了這些問題,甚至能在非官方CUDA映象以外的映象工作。 nvidia-docker
是一個Volume Plugin,而 nvidia-docker2
則是一個Docker Runtime,機制的差異,帶來了巨大的改進。
安裝nvidia-docker2
Debian-based distributions
以下是基於Debian系的安裝方法:
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
具體到Ubuntu 16.04來說, nvidia-docker.list
就是如下內容:
deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/$(ARCH) / deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/$(ARCH) / deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/$(ARCH) /
RHEL-based distributions
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \ sudo tee /etc/yum.repos.d/nvidia-docker.repo
紅帽系的,孤沒用過,以上僅為官方樣例。
配置nvidia-docker2
安裝後,需要配置新的Docker Runtime。 同時,也需要把預設的Runtime設為 nvidia
。
{ "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }, "default-runtime": "nvidia", ... }
以上內容加入 /etc/docker/daemon.json
檔案中,然後重啟 dockerd
。
sudo systemctl restart docker
對不需要GPU資源的應用來說,這樣設了也不會有問題,除非它依賴另一個Runtime。 如果沒有 default-runtime
的配置,在執行時新增一個引數 --runtime
,也能使容器可以訪問GPU資源。
docker run --runtime nvidia ...
APT證書驗證問題
某些公司的內網,環境及其惡劣,證書驗證不一定能通過。 把一下一行新增到 /etc/apt/apt.conf
中,可以確保 apt update
時不出問題。
Acquire::https::nvidia.github.io::Verify-Peer "false";
參考
- NVIDIA/nvidia-docker/wiki/About-version-2.0" rel="nofollow,noindex" target="_blank">About version 2.0 · NVIDIA/nvidia-docker Wiki
- Repository configuration | nvidia-docker
- Installation (version 2.0) · NVIDIA/nvidia-docker Wiki
- Accessing GPUs from a Docker Swarm service
- Upgrading to the NVIDIA Container Runtime for Docker :: DGX Systems Documentation
- dockerd | Docker Documentation
- Getting "server certificate verification failed" during apt-get update - Ask Ubuntu
- ubuntu - Using a self-signed SSL cert for an HTTPS-based internal APT repository - Server Fault