Docker入门指南:基于 docker 搭建机器学习/深度学习开发环境

实际工作中,许多项目开发需要在Linux服务器上进行,本文为习惯使用 Windows 操作系统的朋友介绍一种基于Docker的,跨平台、便携性(方便移植、重新部署、可远程访问)的开发环境搭建方法。

1. 创建开发环境

首先来创建开发环境容器,深度学习有TensorFlow和Pytorch两种主流开发框架,建议直接从它们的官方镜像创建开发环境容器1,其GPU版本的官方镜像中已安装好显卡驱动和CUDA,可直接启用GPU训练。(TensorFlow官方Docker镜像仓库PyTorch官方Docker镜像仓库

docker run -it  --name="torch-gpu" -p xxxx:22 --privileged -v /home/project/:/home:rw -v /mnt:/mnt:rw  --ipc=host --gpus all  -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all  hadeszsc/torch-gpu:1.12.0 /bin/bash

若通过上述方法配置的 Docker 开发环境无法识别 GPU,那么可尝试下述方法,通过 NVIDIA 提供的官方镜像来配置Docker开发环境,可获得更好的 GPU 支持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-get install -y nvidia-container-toolkit
systemctl restart docker   # 以上设置在重启docker服务后生效
# 
docker run -it  --name="tf-gpu" -p xxxx:22 --privileged -v /home/project/:/home:rw -v /mnt:/mnt:rw --ipc=host --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/tensorflow:22.10.1-tf2-py3 /bin/bash

创建环境后,建议直接进入环境容器内安装所需的工具包,因为 IDE 内的集成终端仅能完成部分终端操作(如:不能识别 conda 命令)。TensorFlow 官方镜像未安装 Anconda,可直接通过 pip 命令进行工具包安装;PyTorch 官方镜像中已安装 Anconda,可使用 conda 命令。

2. Docker 容器配置

Docker 容器需要启动 SSH 服务后,才可实现与 IDE 的连接。首先在容器内安装 SSH 服务,shell 命令如下2

# 更新apt,并安装文本编辑器、SSH服务和screen服务
apt-get update && apt-get install -y vim openssh-server screen && rm -rf /var/lib/apt/lists/*

然后检查ssh-server是否安装成功,shell 命令如下:

service ssh start

出现如下结果,即为安装成功

在这里插入图片描述

接下来,设置 ssh-server 在容器启动时自启动(不然每次启动容器后,需手工启动该服务)并配置该服务,shell 命令如下:

# 设置 ssh 服务开机自启
echo 'service ssh start'>>~/.bashrc

# 配置 SSH 服务使用密码登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# vim /etc/ssh/sshd_config		# 修改后可用 vim 打开文档确认

随后,为ssh登录设置一个密码,这里密码暂定为 passwd,请牢记你的密码,同时,用户名默认为root

passwd

结果如下图所示:

在这里插入图片描述

最后重启ssh服

service ssh restart

结果如下图所示:
在这里插入图片描述

3. SSH 连接 IDE

3.1 SSH连接测试

首先测试环境(容器)SSH服务是否配置成功,在本机 cmd 中输入如下 shell 命令:

# 如:ssh -p 22 root@192.168.1.1
ssh -p 容器22端口映射到本机或服务器上的端口号 root@本地或服务器ip地址(注意与前@号间不要有空格)

Windows 系统中,查询本机ip地址的方法是在 cmd 中输入 ipconfig 命令,结果如下图中圈出所示。一定注意要用以太网适配器(WSL)的IPV4地址,这是本机网卡的ip地址,它与电脑硬件绑定、终身不变。若错用无线局域网适配器(WLAN)的IPV4地址,可能会随接入无线网路由器的不同而发生改变(该改变会引起 Docker SSH 连接错误)。
在这里插入图片描述

若连接成功,则如下图所示,输入yes后按回车键即可。

在这里插入图片描述

若出现下图错误,是由网络安全设置对本地实施的保护措施,它由于本次访问此ip地址:端口号组合提供的身份验证秘钥与第一次访问时保存在本地的身份秘钥不符所导致。这是因为原Docker容器已被删除,新创建的Docker容器的身份秘钥发生了改变。仅需按所给出地址 Offending ECDSA key in C:\Users\xxx/.ssh/known_hosts,删除 known_hosts 文件中此ip地址:端口号对应的记录即可。

在这里插入图片描述

3.2 正式连接 IDE

VSCode 是一个好的 IDE 连接选择。其中常用的SSH连接插件有三种,这里我们选择使用 Remote SSH(本地插件安装),其他两种插件的适用场景可参考文章《VSCode中利用Remote SSH插件远程连接服务器并进行远程开发3

VSCode中,Remote SSH的详细使用方法可参考文章《VSCode Remote 体验》和文章《VSCode+Docker: 打造最舒适的深度学习环境》。要添加多个 SSH 连接,可在 C:\Users\user.ssh\config 文件中设置多条记录,具体设置方法可参考文章《VSCODE使用多个账户连接远程服务器》。

值得注意的是:

  1. 必须在(SSH连接的)远程开发环境中,也安装VSCode的Python和Jupyter插件
  2. 同一个 ip 只能生效一个端口的SSH连接,若在C:\Users\user.ssh\config 中配置了同一个 ip 的不同端口的多条记录,则只有最上面的那一条端口配置生效,需要切换端口时需要人工修改config文件中不同端口配置记录的位置。

4. Docker 容器直连 IDE

在 VSCode 中安装 Dev Containers 插件。然后在远程资源管理器中按如下图所示配置。
在这里插入图片描述


  1. Docker安装请参考作者文章:Docker入门指南:Docker 安装方法(Win10 家庭版)
    Docker容器的创建请参考作者文章:Docker入门指南 ↩︎

  2. 不论TensorFlow 官方镜像还是 PyTorch 官方镜像都使用 Ubuntu 系统,所以 Linux 软件安装采用 apt 命令 ↩︎

  3. 该参考文献对比了三种 SSH 连接插件的异同及其适用场景 ↩︎

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器学习docker是一种用于部署和管理机器学习应用程序的技术。通过使用docker容器,可以将机器学习模型和相关的依赖项打包在一起,并以镜像的形式进行部署。这样,可以轻松地在不同的环境中运行和共享机器学习应用程序。 要安装docker并创建docker容器,可以参考作者提供的《Docker入门指南Docker 安装方法(Win10 家庭版)》的文章。在容器中创建机器学习应用程序的过程可以参考作者提供的《Docker入门指南》的文章。你可以通过从远程仓库下载镜像、制作自己的镜像文件(DockerFile)或加载现有的镜像来获取机器学习镜像。 对于部署机器学习模型作为REST API的需求,可以使用Flask Dockerize来创建一个简单的Flask应用程序。在启动Flask应用程序之后,可以将训练好的机器学习模型加载到内存中,并通过预测端点来返回预测结果。通过这种方式,可以将机器学习模型封装在docker容器中,方便进行部署和服务化。 总结起来,机器学习docker是一种用于部署和管理机器学习应用程序的技术,可以通过docker容器来打包和部署机器学习模型及其相关依赖项。具体的安装和使用方法可以参考作者提供的文章。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker入门指南:基于 docker 搭建机器学习/深度学习开发环境](https://blog.csdn.net/xunyishuai5020/article/details/125816332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Docker学习---docker镜像](https://blog.csdn.net/qq_52001969/article/details/125827901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [部署机器学习模型:使用Flask将Docker学习和机器学习模型作为REST API进行部署](https://download.csdn.net/download/weixin_42169971/14997954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值