zoukankan      html  css  js  c++  java
  • pycharm远程调试docker containers

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


    准备

    • 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,在创建容器时需要设置端口映射,-p 本机端口:容器端口

    在这步之前,你应该安装好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@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
    $ echo "export VISIBLE=now" >> /etc/profile12345678
    

    对于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端口。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啦~
    只要在调试的时候,选择新建的远程调试编译器就好啦~
    终于可以将心思全部放在实现算法上啦,撒花~~~

  • 相关阅读:
    第一次上机作业
    第一次作业
    信号
    进程基础
    计算机网络(第七版)谢希仁编著 第四章课后答案详解
    shell脚本编程
    关于linux安装软件(Ubuntu)时遇见的常见问题处理
    Linux系统C语言开发环境学习
    LINUX下安装中文输入法
    处理《无法获得锁 /var/lib/dpkg/lock
  • 原文地址:https://www.cnblogs.com/ruiyang-/p/10158658.html
Copyright © 2011-2022 走看看