pycharm远程调试docker containers

如今作深度学习相关的工做,因此不可避免的要使用到GPU.可是GPU在远程服务器,调试真的很晕。
刚开始的使用2D网络的时候在本地还能调试一下,可是自从使用了3D网络,本地无法调试。只能本地改完代码,上传服务器,再用服务器来跑新的代码,手动加print调试。23333
为了不再作这么傻的事,要把远程调试的配置记录下来。之后直接用Pycharm调试远程服务器里的docker container,美滋滋调试代码 ssh error https://blog.csdn.net/wd2014610/article/details/79945424git


准备

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

原理

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

配置流程

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

1、远程服务器建立docker container,在建立容器时须要设置端口映射,-p 本机端口:容器端口

在这步以前,你应该安装好docker而且下载好了相应的image。(若是你有GPU,那么同时须要配置好cuda)
若是你还没用过Docker,那么你须要先看看下面的连接,了解docker的原理。对配置远程调试很是有帮助
Docker GitBook
准备工做都搞定了么?
开始干活咯~docker

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

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

# 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
$ echo "export VISIBLE=now" >> /etc/profile12345678

对于sed命令,若是须要学习能够查看
Sed命令详解session

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

$ service ssh restart

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

# 此操做在远程服务器
$ docker port <your container name> 22
# 此操做将查看docker container中端口22,在远程服务器上端口的映射
# 输出结果以下所示
0.0.0.0:8022
# 代表只要ssh连接远程服务器的8022端口,实际是连接docker container中的22端口。1234567

第五步,测试是否可以使用ssh连接docker container学习

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

若是可以连接成功到docker container就完成了这次ssh的配置。
PS:若是失败请按如下顺序检查
1.ssh的端口配置是否正确?(包括服务器和docker container)
2.是否开启了防火墙,将端口禁用? 3.也能够运行 sudo gedit /etc/ssh/sshd_config 修改配置,保存,并重起ssh sudo service ssh restart
到这里已经完成一大半啦。以后的配置就相对简单啦。

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啦~ 只要在调试的时候,选择新建的远程调试编译器就好啦~ 终于能够将心思所有放在实现算法上啦,撒花~~~

相关文章
相关标签/搜索