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> <镜像名>。将容器保存为镜像。
赞 (0)