实际工作中,许多项目开发需要在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
#
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 连接插件的异同及其适用场景 ↩︎

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

  1. 【物体检测快速入门系列 | 03】Windows部署Docker GPU深度学习开发环境

    这是机器未来的第3篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/124815912 1. 概述 在<物体检测快速入门 ...

  2. 如何使用docker配置深度学习开发环境

    文章目录 1.底层驱动的安装 1.1 操作系统的安装 1.2 显卡驱动的安装 1.3 cuda的安装 2.使用docker配置深度学习开发环境 2.1 docker的安装 2.2 nvidia_doc ...

  3. 使用RTX3080显卡搭建基于Pycharm+Python+Cuda+cuDNN+TensorFlow的深度学习开发环境

    本文链接:https://blog.csdn.net/tjhyx2012/article/details/112955582 作为一名新手,也是出于兴趣,我通过查找有关资料,使用RTX3080显卡搭建 ...

  4. Ubuntu18.04+CUDA10.2 深度学习开发环境配置指南

    深度学习 Author:louwill Machine Learning Lab 搞深度学习环境永远是第一步.笔者之前也写过配置的两篇文章,但时间久远,目前来看版本已经过旧了.之前两篇参考: 深度学习 ...

  5. 【Linux Mint 深度学习开发环境搭建】开发软件安装

    系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...

  6. 基于Anaconda安装GPU版PyTorch深度学习开发环境

    基于Anaconda安装GPU版PyTorch深度学习开发环境 1 安装Anaconda 2 安装GPU计算驱动 2.1 检查是否有合适的GPU 2.2 下载CUDA和cuDNN 2.3 安装CUDA ...

  7. WindowServer2012R2+Anoconda3.5.0.1+CUDA9.0+cuDNN7.1.3+Tensorflow-gpu1.6离线搭建深度学习开发环境

    WindowServer2012R2+Anoconda3.5.0.1+CUDA9.0+cuDNN7.1.3+Tensorflow-gpu1.6离线搭建深度学习开发环境 关键词:Windows,Tens ...

  8. 基于MacOS搭建ESP8266 NodeMCU CP2102开发环境

    基于MacOS搭建ESP8266-NodeMCU开发环境 1. 下载.安装驱动 2. Arduino开发环境配置 2.1. 下载.安装Arduino 2.2. 配置Arduino 1. 下载.安装驱动 ...

  9. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

最新文章

  1. EPSON机器人的以太网通讯简单总结
  2. CentOS6.4 添加播放×××
  3. UVA11991第k次出现的v的下标
  4. [asp]统计在线人数情况
  5. java矩形翻转_如何判断一个点在旋转后的矩形中
  6. ios12上滑关闭程序动画_苹果iOS 12.3正式版发布:上滑清除程序动画重新回归
  7. python比较文件每行长度_读取文件并查找所有行的长度是否相同
  8. iOS开发之App从点击到启动
  9. 源码安装lamp以及论坛
  10. [恢]hdu 2000
  11. 博客堂服务器转移成功!
  12. Java速成系列-03-Java的下载
  13. 任意数的matlab中阶乘,数组表示
  14. php json转数组不成功,phpjson转数组出错
  15. 计算机声卡的作用和功能,声卡有什么功能
  16. FreeCodeCamp学习--Falsy Bouncer
  17. 服务器的日常维护需要做什么?
  18. 阿里云服务器运行django项目报错sqlite3版本低以及注意事项
  19. 我的Python分析成长之路9
  20. C语言-XLSX基础数据解析(需借助libxml2库)

热门文章

  1. 2018最热门的编程语言是什么呢?
  2. oracle数据库超大表名更改,oracle如何修改表名_数据库,oracle,修改表名
  3. 桥梁工程相关c语言程序,土木工程专业(路桥梁工程方向)本科生培养方案.doc
  4. Spring Ioc/DI 控制反转和依赖注入
  5. #2311. 兔子与樱花 ( sakura )
  6. EDAS助力「人人视频」新业务快速稳健上云
  7. 驱动级键盘模拟(C#)(高手请飘过)
  8. 网站打开速度对网站的影响!
  9. 有什么好的模型可以提高时间序列预测的准确率
  10. Spring Boot 2 整合Redis哨兵模式