• windowns上pycharm和jupyter远程docker开发


    目录

    1. 创建容器
    2. 配置 SSH 服务
    3. 在 PyCharm 里配置部署环境
    4. 在 PyCharm 里配置远程解释器
    5. 操作
    6. 注意事项

    一、创建容器

    sudo nvidia-docker run -it --name 容器名称 -p 1234:8888 -v 宿主机: 镜像文件夹 镜像:版本 bash

    示例一:

    sudo nvidia-docker run -it -p 5592:5592 -p 5593:5593 -p 8022:22 --name="tf_yifan"

    -v /u02/yifan/project:/project

    -v /u02/yifan/data:/data tensorflow/tensorflow:latest-gpu-py3-jupyter /bin/bash

    实例二:

    sudo nvidia-docker run -it -p 5592:5592 -p 5593:5593 -p 8022:22 -p 5014:5014 --name pytorch_yifan -v /u02/yifan/project_addr_3:/project -v /u02/yifan/addr_3:/data pytorch_xgboost_gpu:V4 /bin/bash

    说明:-v作用就是宿主机和容器的映射。这个功能很有用,不过需要在创建容器的时候规划好,在后期开发的时候就不用cp宿主机和容器的文件了。

    二、配置 SSH 服务

    接着我们在刚刚新建的容器里配置 SSH 服务,首先安装 openssh-server:

    $ apt-get update

    $ apt-get install -y openssh-server

    若这个不行,需要考虑离线安装:具体方法可见另一篇文章

    然后建立一个配置文件夹并进行必要的配置:

    $ mkdir /var/run/sshd

    echo 'root:passwd' | chpasswd# 这里使用你自己想设置的用户名和密码

    $ apt-get install vim

    $ vim /etc/ssh/sshd_config #

    PermitRootLogin yes

    PasswordAuthentication yes

    PubkeyAuthentication yes

    AuthorizedKeysFile  .ssh/authorized_keys

       

    下面这个没有配置也行:

    $ sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

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

    $ mv /etc/bash.bashrc /etc/bash.bashrc.bak

    重启 SSH 激活配置:(重启容器也需要开启这个)

    $ service ssh restart

    以上方式,在重启容器后会失效,建议写到文件内:

    vi /etc/rc.local

    service sshd start

    在服务器(宿主机)上(不是服务器的 docker 里)测试刚刚新建 docker 容器中哪个端口转发到了服务器的 22 端口:

    $ sudo docker port [your_container_name] 22

    # 如果前面的配置生效了,你会看到如下输出 

    # 0.0.0.0:8022

    最后测试能否用 SSH 连接到远程 docker:

    $ ssh root@[your_host_ip] -p 8022

    # 密码是你前面自己设置的

    到这里说明服务器的 docker 端已经完成配置。

    查看是否启动:

    sudo ps -e |grep ssh

    三、在 PyCharm 里配置部署环境

    打开 PyCharm Tools > Deployment > Configuration, 新建一个 SFTP 服务器,名字自己取:

    输入如下图配置,注意这里的端口是你刚刚设置的映射到服务器主机 22022(ssh) 端口的 docker 容器中的端口,我这里使用的是 8022,账号密码是你刚刚自己设置的(没有就再创建一个),这里的 Root Path 设置一个远程 docker 容器里的路径:

    配置完点击 Test SFTP connection, 如果成功就恭喜你,可以进行下一步了。

    最后在 Mappings 中配置路径,这里的路径是你本地存放代码的路径,与刚刚配置的 Root Path 相互映射(意思是 Mapping 里本机的路径映射到远程的 Root Path),方便以后在本地和远程 docker 中进行代码和其他文件同步。

    四、在 PyCharm 里配置远程解释器

    点击 PyCharm 的 File > Setting > Project > Project Interpreter (或者直接下面的小图标)右边的设置按钮新建一个项目的远程解释器

       

    图中所述的查的思路:

    import sys

    sys.executable

    例如:

       

    配置完成以后在项目解释器界面就会出现如下图所示,可以看到此时已经完成远程解释器的本地化:

    配置完成以后需要等本地和远程的环境同步一下,到这里,恭喜你,可以用最舒服的姿势。。。写代码了。

    五、操作

    上传本地代码到容器

    手动设置:

    修改之后可以随时右键 deployment->upload 到远程主机,或者直接在本地调试运行;也可以如下图一样,通过tools这里,里面有上传和下载。目前最好的实践是在局域网的服务器上,时延低,同步速度快。

    测试上传本地代码到服务器:

    自动设置:后期只要ctrl + s 就能完成上传了。

       

    查看远程服务器的文件

    六、注意事项

    1. 每次需要上传以后运行代码方能生效,刚开始时候经常忘记,导致怀疑自己是不是改错

    参考文献

    1. 上传和下载代码: https://blog.csdn.net/hanchaobiao/article/details/84069299
    2. Pycharm远程连接服务器 https://blog.csdn.net/baidu_39622935/article/details/84299439
  • 相关阅读:
    Java 如何将 List 转换为 MAP
    Spring Batch BATCH_JOB_INSTANCE 表不存在错误
    Spring 项目启动测试的时候错误:Unable to acquire JDBC Connection
    Spring JPA 如何进行无参数查询布尔类型
    Spring 数据处理中的事务级别
    Spring 测试运行的时候提示 Unable to find a @SpringBootConfiguration 错误
    Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
    Java 属性文件乱码问题
    Spring JPA 查询的时候提示错 org.hibernate.TransientObjectException
    Spring Batch 事务限制
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/14087844.html
Copyright © 2020-2023  润新知