Pycharm远程调试docker containers

本文详细介绍了如何在本地使用Pycharm通过SSH连接远程服务器,配置Docker容器,实现代码远程调试。通过安装Docker、配置SSH服务、设置Pycharm连接参数等步骤,轻松解决代码远程调试难题。
部署运行你感兴趣的模型镜像

现在做深度学习相关的工作,所以不可避免的要使用到GPU.但是GPU在远程服务器,调试真的很晕。
刚开始的使用2D网络的时候在本地还能调试一下,但是自从使用了3D网络,本地没法调试。只能本地改完代码,上传服务器,再用服务器来跑新的代码,手动加print调试。23333
为了避免再做这么傻的事,要把远程调试的配置记录下来。以后直接用Pycharm调试远程服务器里的docker container,美滋滋调试代码


准备

  • Ubuntu 16.04(远程服务器)
  • Mac或Ubuntu(本地)
  • docker(远程服务器)
  • openssh-server(远程服务器)
  • Pycharm profession版(本地)
  • -ssh(本地)

原理

本地利用SSH链接远程服务器交互数据,在本地Pycharm上显示远程结果。

配置流程

  1. 在远程服务器创建docker container
  2. 远程服务器ssh服务配置
  3. Pycharm链接远程服务器(文件同步)
  4. Pycharm链接远程的docker container (配置远程编译器)

一、远程服务器创建docker container

在这步之前,你应该安装好docker并且下载好了相应的image。(如果你有GPU,那么同时需要配置好cuda)
如果你还没用过Docker,那么你需要先看看下面的链接,了解docker的原理。对配置远程调试非常有帮助
Docker GitBook
准备工作都搞定了么?
开始干活咯~

二、 远程服务器ssh服务配置

接下来需要配置远程服务器的ssh服务。
第一步,我们需要在远程服务器上安装openssh-server

# Ubuntu
$ apt update && apt install openssh-server

Ps:这里注意,不仅仅是远程服务器上要安装ssh服务,同时远程服务器上的docker container也内也需要安装openssh-server。

第二步,安装完成以后需要配置ssh服务

# 次配置在docker container中完成
$ echo 'root:test' | chpasswd
# 将Root的密码修改为test
$ sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 允许使用root身份登录
$ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
# 限制 PAM方式登录

$ echo "export VISIBLE=now" >> /etc/profile

或者

vim /etc/ssh/sshd_config
修改: #PasswordAuthentication yes  为: PasswordAuthentication yes

修改: PermitRootLogin prohibit-password 为: PermitRootLogin yes

对于sed命令,如果需要学习可以查看
Sed命令详解

第三步,配置好ssh服务之后重启ssh服务

$ service ssh restart

第四步,测试docker container中ssh服务端口在远程服务器上的映射

# 此操作在远程服务器
$ docker port <your container name> 22
# 此操作将查看docker container中端口22,在远程服务器上端口的映射

# 输出结果如下所示
0.0.0.0:8022
# 表明只要ssh链接远程服务器的8022端口,实际是链接docker container中的22端口。

第五步,测试是否能够使用ssh链接docker container

$ ssh root@<你服务器的ip地址> -p 8022
# 密码就是刚刚重新设置的test

如果能够链接成功到docker container就完成了此次ssh的配置。
PS:如果失败请按以下顺序检查
1.ssh的端口配置是否正确?(包括服务器和docker container)
2.是否开启了防火墙,将端口禁用?

到这里已经完成一大半啦。之后的配置就相对简单啦。

Pycharm链接远程docker container(文件同步)

现在开始配置Pycharm

第一步,配置SFTP
在导航栏中 Tools>Depolyment>Configuration中添加配置SFTP。
如图
这里写图片描述
添加配置SFTP,点击弹窗左上角的**+号。选择SFTP**,根据自己的实际情况进行配置。
这里写图片描述
PS:这里的root密码就是之前设置好的test

第三步,配置SFTP中的mapping

这里写图片描述
都配置完之后。打开自动上传功能
Tools>Depolyment>Automatic Upload(always)
本地修改好代码只要按保存键就自动将本地代码上传至远程docker container中。
到这里已经配置好代码的自动同步了。还差最后一步,远程调试就配置成功。

Pycharm链接远程docker container (配置远程编译器)

打开Pycharm专业版的配置
这里写图片描述

添加新编译器(远程docker container编译器)
这里写图片描述

在打开的页面选择之前配置好的SFTP
这里写图片描述

PS:
通常选择完之后羡慕有两个选项
Create: 新建SFTP
Move: 将选择的SFTP作为编译器的SFTP
通常选择Move就好

这里写图片描述

最后配置docker container的编译器位置,还有项目位置的映射。

完成这一步就彻底搞定Pycharm远程调试Docker container啦~
只要在调试的时候,选择新建的远程调试编译器就好啦~
终于可以将心思全部放在实现算法上啦,撒花~~~

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

远程服务器开发方面,PyCharm 和 VSCode 都提供了强大的支持,但它们在功能设计、用户体验和适用场景上各有侧重。 ### 远程开发功能比较 PyCharm 专业版提供了较为完善的远程开发功能,特别是在 Python 开发领域表现突出。通过其内置的部署工具,用户可以配置远程服务器的 SSH 连接,并实现本地与远程项目的代码同步。此外,PyCharm 支持设置远程解释器,使得开发者可以在本地环境中运行和调试远程服务器上的代码。这种方式非常适合需要频繁调试和部署 Python 应用程序的场景 [^2]。 VSCode 则以其轻量级和高度可扩展性著称。通过安装官方提供的 Remote 开发插件(如 Remote - SSH、Remote - Containers 和 Remote - WSL),开发者可以轻松实现远程服务器的连接和开发环境的配置。VSCode 的远程开发功能不仅限于 SSH 连接,还支持 Docker 容器和 Windows 上的 Linux 子系统等环境。其插件生态丰富,用户可以根据具体需求选择合适的扩展 [^3]。 ### 使用体验对比 在使用体验上,PyCharm 更倾向于提供一个一体化的开发环境,尤其是在 Python 项目管理、代码调试和版本控制方面具有优势。它适合那些需要深度集成工具链、追求开箱即用体验的开发者 [^2]。 VSCode 的优势在于灵活性和可定制性。由于其插件系统开放且活跃,开发者可以根据自己的工作流自由组合工具。VSCode 的界面简洁,响应速度快,适合需要在多种语言和环境中切换的开发者。此外,VSCode 是开源软件,这使得它在全球开发者社区中拥有广泛的用户基础 [^3]。 ### 适用场景 对于专注于 Python 开发的团队或个人,尤其是需要进行复杂项目管理和调试的场景,PyCharm 专业版是一个不错的选择。而对于希望在一个轻量级编辑器中完成多语言、多环境开发的用户,VSCode 提供了更广泛的适用性和更高的灵活性 [^2]。 ```python # 示例代码:远程调试的基本配置(以 VSCode 为例) # 在 VSCode 中,可以通过 `.vscode/launch.json` 文件配置调试器 { "version": "0.2.0", "configurations": [ { "name": "Python: 远程附加", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/path/to/remote/project" } ], "justMyCode": true } ] } ``` ### 总结 无论是 PyCharm 还是 VSCode,它们都在不断优化远程开发体验。选择哪款工具,主要取决于个人或团队的具体需求、开发习惯以及对特定功能的依赖程度。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值