【docker】在windows下配置linux深度学习环境并开启ssh远程连接

linux下配置深度学习程序方便,windows下用起来更习惯。
windows下直接利用虚拟机是不太容易对GPU进行虚拟,利用docker就可以。这里简单介绍了在win主机下如利用docker,配置虚拟机环境,并和主机开启ssh连接配置。

配置与系统要求

win10 22H2或者win11系统,nvidia显卡。(系统必须符合要求,否则无法在docke虚拟机中启动GPU,失败的例子:https://blog.csdn.net/rocking_struggling/article/details/126068555)

1.windows下docker安装与使用

参考我以前的这篇博客:https://blog.csdn.net/rocking_struggling/article/details/126073339
安装完成docker后(建议pull nvidia官方的docker,里面自带cuda环境),使用如下命令启动docker的image:

docker run -it -p 50003:22--gpus=all  --privileged Unbuntu-env(要启动的Image名字) 

这几个启动参数中:--gpus=all 是调用GPU,--privileged是开放openssh防止报错,-p 50003:22是端口映射,允许ssh登录进去。(后面本文具体介绍其作用)
设置虚拟机的密码:

passwd
#接下来输入两边新密码(默认的用户名是root,密码就是你输入的这个)

启动docker后,安装必备的一些程序,后面能够用到:

apt-get update
apt install net-tools        # ifconfig 
apt install iputils-ping     # ping
apt install sudo
apt-get install vim

2.docker配置GPU

nvidia官方有已经配置好cuda环境的,我们直接pull下来就行,但启动image的时候,要加参数--gpus=all(启动容器的时候就不需要了,直接docker start即可)
比如:

docker run -it --gpus=all nvidia/cuda:11.4.2-base-ubuntu20.04 

进入系统nvidia-smi一下,看看是否调用GPU成功:
在这里插入图片描述

3. 安装必备的一些软件(anaconda、openssh)

要简单上诉功能,需要在docker虚拟机下安装相应的服务。深度学习相关的anaconda安装不在介绍,这里主要介绍一下安装openssh。
参考博客:https://blog.csdn.net/youandme520/article/details/120356451
安装ssh-server服务

sudo apt-get install openssh-server

启动ssh服务:

service ssh start

确认ssh服务器是否开启:

ps -e | grep ssh

很多这一步会报错,需要在docker启动image项添加--privileged

4.配置ssh服务

首先关闭ssh:

sudo /etc/init.d/ssh stop 
#或者
service ssh stop

然后打开ssh配置文件

sudo vim /etc/ssh/sshd_config

在打开的文件中主要修改两处:
1.将port 22前面的 "#"号去掉,默认端口设置为22
2.将#PermitRootLogin prohibit-password”修改为“PermitRootLogin yes”

(这里需要了解一下如何使用vim进行编辑,参考:https://www.runoob.com/linux/linux-vim.html)

编辑完成后重新启动ssh服务

service ssh restart

查看虚拟机的Ip地址

ifconfig  #需要提前安装

在这里插入图片描述
我本文发现第一个IP地址:172.17.0.2从主机ping不通,但是第二个回环IP:127.0.0.1可以ping通。但是想要ssh登录docker虚拟机还需要将22端口给映射出来,这里启动image时添加参数:-p 50003:22
完成了上述操作后,我们可以在主机利用ssh登录(保持docker虚拟机在后台,不要关闭):

  • ip地址:回环地址127.0.X.X(整个地址段都可以登录)
  • 用户名:root
  • 密码:(上文passwd设置的密码)
  • 端口号:启动时条件的参数,这里是50003

如图用mobaxterm登录所示:
在这里插入图片描述
登录成功界面:在这里插入图片描述
有的时候长时间不用,docker虚拟机可能会被清内存啥的,出现连接不上ssh,无法调用gpu的bug,这是需要重启一下虚拟机(container),然后再重新打开ssh服务即可。

其他

1.docker虚拟环境在安装opencv时也会报错:libGL.so.1: cannot open shared object file: No such file or directory
参考:https://blog.csdn.net/qq_50195602/article/details/124188467
要么安装这个版本的opencv:

pip install opencv-python-headless

或者

RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y

2.我这里提供一个已经安装好openssh及深度学习环境的镜像,大家不用配置了,直接pull即可:

docker push 230229348/unbuntu-deep-ssh:latest
<think>我们正在处理一个关于在Mac上使用PyCharm配置远程解释器连接Windows电脑以运行深度学习代码的问题。 根据用户需求,我们需要配置PyCharm的远程解释器,但通常PyCharm的远程解释器功能主要用于连接Linux服务器,而Windows作为远程主机的情况较少见。 不过,我们可以尝试通过SSH连接(如果Windows电脑支持SSH)或者使用其他方法(如SMB共享+本地映射)来实现。 但是,请注意,PyCharm的远程解释器功能要求远程机器是Linux或Unix-like系统,对于Windows,官方支持有限。然而,我们可以尝试以下方法: 方法1:在Windows上安装SSH服务器(如OpenSSH),然后通过SSH连接配置远程解释器(类似于连接Linux服务器)。 方法2:使用Windows的WSL(Windows Subsystem for Linux),然后在WSL中安装Python环境,再通过SSH连接到WSL。 由于用户明确要求连接Windows电脑,我们假设用户希望直接使用Windows上的Python环境(而不是WSL)。因此,我们尝试方法1。 步骤: 1. 在Windows电脑上启用OpenSSH服务器。 2. 确保Windows电脑上的Python环境已经安装(例如Anaconda)。 3. 在Mac上的PyCharm中配置远程解释器,通过SSH连接Windows电脑。 详细步骤: 第一步:在Windows电脑上安装和配置OpenSSH服务器 - 打开Windows设置 -> 应用 -> 可选功能 -> 添加功能,找到“OpenSSH服务器”安装。 - 安装完成后,启动OpenSSH服务器服务。可以通过服务管理器(services.msc)找到“OpenSSH SSH Server”启动,或者使用PowerShell(管理员身份)运行: net start sshd - 设置服务自动启动:sc config sshd start=auto - 确认防火墙允许SSH(端口22)的入站连接。 第二步:在Windows配置Python环境 - 安装Anaconda或Miniconda,或者直接安装Python,确保Python可执行文件路径已添加到系统环境变量PATH中。 - 注意:由于Windows的路径与Linux不同,在PyCharm中配置远程解释器时,需要指定完整的路径(例如:C:\Python\python.exe 或 C:\Anaconda3\python.exe)。 第三步:在Mac上的PyCharm中配置远程解释器 - 打开PyCharm,进入Preferences(或Settings)-> Project Interpreter -> 点击齿轮图标 -> Add。 - 选择SSH Interpreter,然后选择“New”配置一个新的SSH连接。 - 输入Windows电脑的IP地址、端口(默认22)、用户名和密码(或使用密钥)。 - 连接成功后,配置远程解释器路径。这里需要指定Windows上的Python解释器绝对路径,例如: C:\Anaconda3\python.exe 但是注意,由于Windows路径使用反斜杠,而远程服务器通常使用Linux路径风格,所以这里可能会遇到问题。PyCharm在通过SSH连接Windows时,可能无法正确识别路径(因为SSH会话通常是在Windows的命令行环境下运行,而命令行环境接受反斜杠路径)。 - 另一种方法是,在配置解释器路径时,使用Windows路径的另一种写法:将反斜杠替换为正斜杠,确保驱动器字母被正确映射。例如: C:/Anaconda3/python.exe 或者,我们可以使用Windows的UNC路径风格,但通常SSH会话在Windows上会启动一个命令行(cmd.exe或PowerShell),所以我们可以像在Windows命令行中那样指定路径。 - 然而,PyCharm在设置远程解释器时,可能会自动将路径转换为Unix风格(在Mac上)或保持原样。因此,我们需要确保路径是Windows系统可以识别的。 第四步:配置路径映射(Deployment) - 为了让Mac上的代码能够同步到Windows电脑,我们需要配置路径映射。在PyCharm的Deployment设置中,添加一个SFTP连接使用相同的SSH配置)。 - 设置本地路径(Mac上的项目路径)和远程路径(Windows上的一个目录,例如:C:/Projects/ 或 D:/DeepLearning/)。注意使用正斜杠。 第五步:测试连接 - 配置完成后,选择该解释器,PyCharm会尝试连接远程Windows机器加载Python环境。如果成功,就可以运行代码了。 注意事项: - 由于WindowsLinux在文件系统上的差异,路径问题可能会比较麻烦。确保在配置路径映射时,远程路径使用Windows支持的格式(正斜杠或反斜杠均可,但建议在PyCharm中使用正斜杠)。 - 另外,在Windows上运行深度学习代码时,可能需要配置CUDA和cuDNN,这些通常需要安装对应的驱动和工具包,且确保Python环境中有对应的深度学习框架(如TensorFlow或PyTorch)的GPU版本。 替代方案: 如果遇到问题,可以考虑使用WSL。在Windows上安装WSL(如Ubuntu),然后在WSL中安装Python环境深度学习框架,再通过PyCharm连接到WSL(此时WSL是一个Linux系统,配置方法就和连接Linux服务器一样)。 引用说明: 根据引用[2]中的内容,配置远程解释器的步骤大致相同,但引用中配置的是Linux服务器。对于Windows,我们需要确保Windows上运行了SSH服务器,且Python环境可用。 生成相关问题: 1. 在Windows配置SSH服务器有哪些注意事项? 2. 如何确保PyCharm远程解释器能够正确识别Windows上的Python环境? 3. 在Windows上运行深度学习代码需要哪些额外的配置(如CUDA)? 4. 如果使用WSL,应该如何配置PyCharm的远程解释器? 5. 如何配置PyCharm的路径映射以避免文件同步问题? 由于用户的问题较为具体,我们按照上述步骤进行回答。</think>### 在 Mac 上使用 PyCharm 连接远程 Windows 计算机运行深度学习任务的配置指南 #### 核心原理 PyCharm 通过**SSH 远程解释器**功能实现跨平台连接,Mac 作为开发机通过 SSH 协议访问 Windows 上的 Python 环境执行代码。数据流向为:Mac 编辑代码 → 自动同步至 WindowsWindows 执行计算 → 结果返回 Mac[^2]。 #### 详细步骤 ##### 1. Windows 端准备 ```powershell # 启用 OpenSSH 服务器(管理员权限运行) Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType Automatic # 配置 Python 环境(示例 Anaconda) conda create -n dl_env python=3.8 conda activate dl_env conda install pytorch torchvision cudatoolkit=11.3 -c pytorch ``` ##### 2. Mac 端 PyCharm 配置 1. **创建远程解释器** `Preferences > Project Interpreter > Add` → 选择 **SSH Interpreter** → 填写 Windows 的 IP 地址和登录凭证 ![配置图示](https://resources.jetbrains.com/help/img/idea/2023.2/remote_interpreter.png) 2. **设置路径映射** - 本地路径 (Mac):`/Users/yourname/project/` - 远程路径 (Windows):`C:/RemoteProjects/` → 确保使用正斜杠 `/` 避免路径解析错误[^2] 3. **指定 Python 解释器** 输入 Windows 上的 Python 绝对路径: ```plaintext C:/Anaconda3/envs/dl_env/python.exe # 示例路径 ``` ##### 3. 验证连接 ```python # 测试脚本 import torch print(f"CUDA available: {torch.cuda.is_available()}") print(f"Device count: {torch.cuda.device_count()}") ``` ▸ 预期输出: `CUDA available: True` `Device count: 1`[^3] #### 注意事项 1. **防火墙设置** Windows 需开放 22 端口: `控制面板 > Windows Defender 防火墙 > 允许应用通过防火墙 > 允许 OpenSSH Server` 2. **性能优化** ```markdown - 启用 [Tools] > [Deployment] > [Automatic Upload] 实现实时同步 - 避免同步大型数据集:使用网络共享盘映射数据目录 ``` 3. **环境隔离** 建议使用 Conda 虚拟环境避免依赖冲突: ```shell conda list --export > requirements.txt # Windows导出 conda create --name cloned_env --file requirements.txt # Mac本地测试 ``` #### 替代方案对比 | 方案 | 优点 | 缺点 | |---------------------|--------------------------|--------------------------| | SSH 远程解释器 | 原生支持调试 | 需 Windows 开启 SSH | | Docker 容器 | 环境隔离完善 | Windows 需启用 Hyper-V | | SMB 共享 + 本地运行 | 无需配置服务 | 无法利用 Windows GPU | #### 常见问题解决 - **连接超时**:检查 Windows IP 是否变动(建议设置静态 IP) - **路径错误**:远程路径使用 `C:/` 而非 `C:\`[^2] - **权限拒绝**:确保 Windows 账户具有 Python 目录读写权限 > **深度学习环境验证要点**: > 1. 确认 CUDA 版本匹配:`nvidia-smi` 与 `torch.version.cuda` 一致 > 2. 检查 cuDNN 可用性:`print(torch.backends.cudnn.version())` > 3. 验证显存分配:`torch.ones(1000,1000).cuda()`[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值