ubuntu配置docker镜像用于深度学习

以 ubuntu16.04,cuda10.1 为例

1.准备工作

  • ubuntu 中安装对应 cuda 版本的显卡驱动,参考链接
  • 安装了 docker 和 toolkits,参考链接
  • 免 sudo 使用 docker,参考链接
  • 测试 docker 的 --gpus 参数是否可用,不可用参考上边链接重新安装 docker
docker run --help | grep -i gpus

2.拉取官方镜像

需要在官方拉取一个封装好 cuda 和 cudnn 的镜像作为初始镜像

  • 去 docker hub 寻找需要的镜像
    ubuntu配置docker镜像用于深度学习_第1张图片Ctrl+f查找关键词,比如需要cuda10.1+cudnn8,查找 10.1-cudnn8
    ubuntu配置docker镜像用于深度学习_第2张图片
  • 复制 docker pull 命令,在终端拉取镜像
docker pull nvidia/cuda:10.1-cudnn8-devel-ubuntu16.04

下载可能会很慢,提前对 docker pull 进行加速,参考链接

3.创建容器

  • 查看当前存在的镜像
docker images

在这里插入图片描述
nvidia/cuda 为刚刚拉取的镜像,注意镜像的REPOSITORYTAGIMAGE ID

  • 通过镜像创建容器,并挂载本地文件夹,文件夹路径根据实际情况写
docker run --gpus all -it -v /home/kkjsk/projects:/projects 1e33220823f3(容器ID) /bin/bash

通过镜像ID创建容器

  • 或者
docker run --gpus all -it -v /home/name/projects:/projects nvidia/cuda:10.1-cudnn8-devel-ubutnu16.04(REPOSITORY:TAG) /bin/bash

通过 REPOSITORY 和 TAG 创建容器

/home/name/projects:/projects 意思是将本地的 /home/name/projects 路径挂载到容器中的 /projects 下,可以自己命名

ubuntu配置docker镜像用于深度学习_第3张图片
成功创建并运行了容器,并且命令行输入ls,可以看到挂载的文件夹

  • 检测是否可以调用显卡驱动
nvidia-smi

ubuntu配置docker镜像用于深度学习_第4张图片

  • 检测cuda是否可用
nvcc -V

在这里插入图片描述
都没问题,则容器可以成功调用显卡,并使用 cuda

4.安装python

官方镜像中没有安装python,也没有pip,因此需要自行在容器中安装所需的python版本,参考源码安装python

  • 注意要把下载的源码包放到挂载的文件夹之下,不然在容器中找不到
  • 在容器中安装 python,去掉命令行中的sudo
  • 有的帖子会修改 python 安装路径,在 docker 容器中不建议修改

5.打包

可以直接打包一个基础环境,也可以将代码所需的依赖包安装好以后再打包,打包方便移植

容器保存为新镜像,将镜像打包

  • 另起终端,查看当前存在的容器
docker ps -a

在这里插入图片描述

  • 通过容器创建新的镜像
docker commit b0a9e5a5a411(容器ID) kkjsk/docker:python(新镜像的DREPOSITORY:TAG)
  • 查看新创建的镜像
docker images

在这里插入图片描述
可以看到镜像 kkjsk/docker:python 成功创建

  • 将镜像保存为本地压缩包,后缀tar
docker save kkjsk/docker:python(REPOSITORY:TAG) cuda10.1_docker.tar(压缩包名)

之后可以在本地看到保存的压缩包

6.导入镜像

在其他电脑使用打包好的镜像时,需要先通过压缩包导入镜像

docker load --input cuda10.1_docker.tar

docker命令大全

你可能感兴趣的:(docker,cuda,ubuntu,深度学习)