当Docker遇见Deep Learning

本文详述如何在Ubuntu系统下利用Docker搭建支持NVIDIA显卡的深度学习开发环境,涵盖从安装Docker、Nvidia Docker2到配置PyCharm的过程,让你在不同版本和依赖下轻松运行深度学习项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阅读本篇文章可以帮你解决的问题是:提供一套解决方案,能够在支持Docker的任何版本Ubuntu系统下,搭建出完美运行各种深度学习框架各种版本各种环境依赖(NAIVID显卡)深度学习工程的开发环境。不仅如此,还要像在本机一样方便的修改代码运行计算。

搭建深度学习计算平台,一般需要我们在本机上安装一些必要的环境,安装系统、显卡驱动、cuda、cudnn等。而随着Docker的流行,往往能够帮我们轻松的进行环境搭建、复制与隔离,所以官方也利用容器技术与深度学习相结合,因此也出现了以下方案。

容器方案比传统方案带来更多的随意性,装系统前不需要考虑Ubuntu哪一个版本符合不符合我们的代码运行要求,我们只需要安装一个自己喜欢的(18.04完全可以),再在官网下载一下显卡驱动,或者软件源附加驱动更新一下就行了,剩下都不需要我们继续考虑。这些也非常的轻松,因为Nvidia对Ubuntu的支持越来越友好,我们只需要下载deb包,一行命令即可安装成功。

系统 显卡驱动 Cuda Cudnn
传统方案 一种版本 必需 一种版本 必需
容器方案 各种版本 必需 非必需 非必需

安装显卡驱动可以参照:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/80102000

正式进入正文之前,确保你已经安装好趁手的系统和显卡驱动。

I. 安装Docker

关于Docker教程,详见:Docker——入门实战

安装指定版本Docker CE

这里的版本由第二部分的Nvidia Docker依赖决定,笔者在写此文时需要的版本是18.03.1,如果在安装Nvidia Docker时依赖的Docker CE版本已经变更,可以卸载重新安装需要的版本。

sudo apt install curl
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update && sudo apt-get install -y docker-ce=18.03.1~ce-0~ubuntu

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把Docker CE 的Edge版本安装在系统中。

启动Docker CE

sudo systemctl enable docker
sudo systemctl start docker

建立docker 用户组

默认情况下,docker 命令会使用Unix socket 与Docker 引擎通讯。而只有root 用户和docker 组的用户才可以访问Docker 引擎的Unix socket。出于安全考虑,一般Ubuntu系统上不会直接使用root 用户。因此,更好地做法是将需要使用docker 的用户加入docker用户组。

# 建立docker组
sudo groupadd docker
# 将当前用户加入docker组
sudo usermod -aG docker $USER

注销当前用户,重新登录Ubuntu,输入docker info,此时可以直接出现信息。

docker info

配置国内镜像加速

在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart docker

II. 安装Nvidia Docker2

Nvidia Docker2项目的主页:https://github.com/NVIDIA/nvidia-docker

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
ocker volume ls -q 
### 使用Docker部署深度学习环境或应用程序 #### 准备工作 为了使用Docker部署深度学习环境,首先要确保计算机已安装Docker。对于Ubuntu系统而言,可以按照如下命令操作以完成Docker的安装: ```bash sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 上述过程涵盖了更新软件包列表、获取官方GPG密钥以及设置稳定版仓库等步骤[^3]。 #### 编写Dockerfile 接下来就是编写`Dockerfile`文件来定义所需的开发环境。这里给出一个简单的例子用于创建基于TensorFlow框架的深度学习环境: ```dockerfile FROM tensorflow/tensorflow:latest-gpu-py3 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "./your_deep_learning_script.py"] ``` 此脚本指定了基础映像为最新的GPU支持版本TensorFlow,并设置了工作目录为`/app`;接着复制并安装依赖项,再把当前主机上的所有文件拷贝至容器内的对应位置;最后指定启动容器时执行的具体指令[^5]。 #### 构建与运行镜像 当准备好`Dockerfile`之后就可以利用它来构建自定义的Docker镜像了。假设该文件位于项目的根目录下,则可通过下面这条命令来进行构建: ```bash docker build -t my_custom_dl_env . ``` 这会读取所在路径下的`Dockerfile`并将新生成的镜像命名为`my_custom_dl_env`。一旦成功建立好了镜像,便能借助于以下方式开启一个新的交互式shell session或者直接运行程序: ```bash # 启动交互模式 docker run -it --rm --name dl_container -v "$PWD":/app my_custom_dl_env bash # 或者直接运行Python脚本(假定入口点已在Dockerfile中设定) docker run --rm --name dl_container -v "$PWD":/app my_custom_dl_env ``` 以上命令中的选项解释:`-i`保持STDIN开放即使没有附加也一样;`-t`分配TTY终端;`--rm`表示退出后自动删除容器;`-v`用来挂载本地卷到容器内以便共享数据。 #### 测试验证 此时应该已经拥有了一个完整的深度学习环境,可以在其中测试一些样例代码来看看一切是否正常运作。例如尝试训练一个小规模的数据集看看能否顺利完成整个流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值