前面小C已经给出了很多深度学习环境的安装教程,但是每次来个新机器都要重新装一遍,既枯燥又耗时,下面介绍docker方法:一次构建,多次运行.并且保证运行环境和开发环境保持一致.更多的docker知识请搜索度娘.下面介绍用docker构建深度学习环境镜像.
宿主机已安装:ubuntu16.04LTS, nvidia-390.59显卡驱动
一、安装 Docker
参考官网 https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce
docker -v //查看是否安装成功
二、安装 Nvidia-docker
参考官网 https://github.com/NVIDIA/nvidia-docker
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
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
nvidia-docker -v //查看是否安装成功
三、拉取nvidia/cuda官方镜像
sudo docker pull nvidia/cuda:9.0-base
NVIDIA官方提供的docker镜像nvidia/cuda,里面已经编译安装了CUDA,但需完善.注意:这里的cuda版本要跟宿主机显卡驱动匹配.
sudo nvidia-docker run -it nvidia/cuda:9.0-base //生成容器
四、在容器里安装深度学习环境
- 更换清华源
请参考 https://blog.youkuaiyun.com/Carina_Cao/article/details/91376042 - 安装必要的工具
因为镜像比较小,一些必要的工具通常没有.apt install vim git
- 完善cuda镜像
安装完整的cuda-toolkit,官方的镜像不完整,这一步很关键.然后安装四个补丁.apt install cuda-toolkit-9-0 sh cuda_9.0.176.1_linux.run sh cuda_9.0.176.2_linux.run sh cuda_9.0.176.3_linux.run sh cuda_9.0.176.4_linux.run
- 安装cudnn,python,tensorflow,mxnet
另起终端,查看容器信息.
把宿主机的以上安装包都拷贝到容器内,当然也可以选择在线安装.sudo docker ps //查看正在运行的容器 sudo docker ps -a //查看容器历史及状态
在容器内安装cudnn,python,tensorflow,mxnet, 安装方式参考:sudo docker cp (宿主机安装包路径) (容器id或name):/(容器内的存放路径)
https://blog.youkuaiyun.com/Carina_Cao/article/details/78875981
https://blog.youkuaiyun.com/Carina_Cao/article/details/90210626exit //退出容器
- 保存镜像
至此,深度学习镜像就构建好了.当我们想在其他机器上使用时(只需要装好系统,显卡驱动,docker和nvidia-docker),打个包传过去,解压就可以了.sudo docker commit (容器id前四位) (镜像repository):(镜像tag) //将刚才的容器保存成镜像,tag重新起名
如果想在已保存好的镜像里继续安装,同样开启容器,安装好退出,再保存成镜像,就像盖大楼一样一层一层往上盖.这就是docker的优势.sudo docker save -o *.tar (镜像repository):(镜像tag) //打包到宿主机,该包可以像文件一样传递 sudo docker load --input *.tar //解压到本地镜像库