在Ubuntu上安装nvidia-docker后可以在docker容器内使用cuda环境,这可以避免手动配置深度学习开发环境的麻烦

首先,使用以下命令添加新的驱动源:

sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update

在Software & Updates中找到Additional Drivers,选中Using NVIDIA driver metapackage,并apply changes

然后使用如下命令安装nvidia-docker:

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 install nvidia-container-toolkit nvidia-container-runtime nvidia-docker
sudo systemctl restart docker

使用如下命令下载运行pytorch镜像:

docker pull pytorch/pytorch:1.2-cuda10.0-cudnn7-devel
docker run --gpus 1 -it -e CUDA_HOME='/usr/local/cuda' -v $local_dir:/workspace --privileged --entrypoint=/bin/bash pytorch/pytorch:1.2-cuda10.0-cudnn7-devel -i 

删除所有容器:

docker stop `docker ps -a -q`
docker rm `docker ps -a -q`

共享目录,映射端口,并运行镜像:

docker run -p $LOCAL_HOST_PORT:$DOCKER_PORT -v $DIR_ON_YOUR_SYS:$DIR_ON_THE_DOCKER $IMAGE_ID

有时我们只想进入镜像的终端而不是运行镜像dockerfile里的CMD命令,这时可以执行以下命令:

docker run -it --name $CONTAINER_NAME --entrypoint=/bin/bash $IMAGE_ID -i

此命令会创建一个新的容器,使用docker ps -a查询容器ID或Name,之后可以使用以下命令关闭,打开,进入容器:

docker stop $CONTAINER_ID
docker start $CONTAINER_ID
docker attach $CONTAINER_ID

使用Ctrl-D退出容器,使用以下命令将容器保存为一个新的镜像:

docker commit $CONTAINER_ID $IMAGE_NAME

如果我们想为新的镜像添加一段CMD dockerfile代码以使镜像可以在运行时自动处理一些脚本文件呢?

新建Dockerfile

FROM #镜像名
ADD #新代码
RUN #新代码

#设置一些参数
EXPOSE 80 
ENTRYPOINT [ "/home/user/endpoint.sh" ]
CMD [ "-D", "FOREGROUND" ]

使用cd进入到Dockerfile所在目录,运行如下命令:

docker build -t $NEW_IMAGE_NAME .

使用如下命令将新的镜像打包保存到tar文件里,或从tar文件里导出镜像:

docker save $NEW_IMAGE_NAME > backup.tar
docker load < backup.tar

标签: none

评论已关闭