Nvidia Docker使用快速入門
Docker使用GPU簡介
在Docker中使用GPU是機器學習的常用場景,其中Nvidia GPU最常見。
在Docker中使用GPU CUDA的便捷之處是,其Ubuntu主機只要安裝Nvidia GPU的驅動,而各個Docker容器根據使用的深度學習的框架版本如TensorFlow,安裝各自不同的CUDA Toolkit版本,從而不相互衝突。
本文簡述在Ubuntu 18.04中,配置過程以及容器內的一些許可權配置。
Nvidia Docker的安裝
Nvidia Docker的官網為:
https://github.com/NVIDIA/nvidia-docker
安裝流程如下:
- Ubuntu 18.04宿主機安裝 Nvidia驅動,https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#how-do-i-install-the-nvidia-driver
- Ubuntu 18.04宿主機安裝 Docker 19.03 (這是2019年要求的版本,Docker社羣版即可)
- 安裝nvidia-container-toolkit
# Add the package repositories $ 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 Docker
在正常使用Docker命令後加--gpu引數即可,如:
docker run --gpus all tensorflow/tensorflow:1.15-gpu-py36 python
Docker容器內使用非root使用者
Docker容器內預設是root使用者,這樣會使容器內建立的檔案(使用-v對映卷時)也是root使用者,從而使用宿主機訪問這些檔案成問題。
使用如下命令達到兩個目的:
- Docker容器內新增使用者ubuntu,並生成/home/ubuntu使用者的home目錄。
- 授權ubuntu使用sudo許可權,不然無法使用pip、apt等安裝軟體。
useradd ubuntu && echo "ubuntu:ubuntu" | chpasswd && adduser ubuntu sudo
這樣啟動時就預設使用ubuntu使用者了。
非root使用者操作Docker
預設情況下,在宿主機需要使用root許可權來操作docker的,如:
sudo docker ps
原因是,Docker守護程式繫結到Unix套接字而不是TCP埠。預設情況下,Unix套接字是由root使用者擁有的,其他使用者只能使用sudo訪問它。 Docker守護程式始終以root使用者身份執行。
如果不想以sudo作為docker命令的開頭,建立一個名為docker的Unix group並將使用者新增到其中。 Docker守護程式啟動時,它將建立一個可由Docker group成員訪問的Unix套接字:
sudo groupadd docker sudo usermod -aG docker $USER
登出賬號重新登入即可生效,或使用如下更便捷的方式使上述更新生效。
newgrp docker
Docker一些常用操作
docker常用引數:
- -it。互動式執行
- -v <宿主機目錄>:<容器內目錄>。對映宿主機的卷給容器讀寫
- -p <宿主機埠>:<容器內埠>。對映宿主機的埠給容器
- --rm。執行完容器退出後直接刪除
docker常用操作:
- docker commit <容器id> <映象名>。將容器儲存為映象。