赞
踩
在Docker中使用GPU是机器学习的常用场景,其中Nvidia GPU最常见。
在Docker中使用GPU CUDA的便捷之处是,其Ubuntu主机只要安装Nvidia GPU的驱动,而各个Docker容器根据使用的深度学习的框架版本如TensorFlow,安装各自不同的CUDA Toolkit版本,从而不相互冲突。
本文简述在Ubuntu 18.04中,配置过程以及容器内的一些权限配置。
Nvidia Docker的官网为: https://github.com/NVIDIA/nvidia-docker
安装流程如下:
# 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
在正常使用Docker命令后加--gpu参数即可,如:
docker run --gpus all tensorflow/tensorflow:1.15-gpu-py36 python
Docker容器内默认是root用户,这样会使容器内创建的文件(使用-v映射卷时)也是root用户,从而使用宿主机访问这些文件成问题。
使用如下命令达到两个目的:
useradd ubuntu && echo "ubuntu:ubuntu" | chpasswd && adduser ubuntu sudo
这样启动时就默认使用ubuntu用户了。
默认情况下,在宿主机需要使用root权限来操作docker的,如:
sudo docker ps
原因是,Docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字是由root用户拥有的,其他用户只能使用sudo访问它。 Docker守护程序始终以root用户身份运行。
如果不想以sudo作为docker命令的开头,创建一个名为docker的Unix group并将用户添加到其中。 Docker守护程序启动时,它将创建一个可由Docker group成员访问的Unix套接字:
sudo groupadd dockersudo usermod -aG docker $USER
登出账号重新登录即可生效,或使用如下更便捷的方式使上述更新生效。
newgrp docker
docker常用参数:
docker常用操作:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。