pycharm连接远程服务器的docker容器进行运行和调试代码

本文介绍了如何配置PyCharm连接远程服务器上的Docker容器进行Python开发,包括启动和配置Docker容器,设置PyCharm的SFTP连接,上传代码并运行,以及解决可能遇到的SSH连接、报错等问题。详细步骤涵盖从容器内部的SSH服务安装到PyCharm的远程解释器设置。
摘要由CSDN通过智能技术生成

目录

目录

一、配置远程服务器的docker容器

 二、配置pycharm并连接docker容器

1.配置SFTP连接

2. 上传本地代码数据到docker容器中并运行

 3.设置python编译器:

三、可能遇到的一些问题:

1.pycharm连接docker容易时,在重启容器之后提示连接不上,进入容器,输入以下命令:

2.报错:kex_exchange_identification: read: Connection reset by peer

3.如果提示:ERROR:systemctl:the ExecStartPre control process exited with error code

就输入以下代码:

4.使用xftp连接虚拟机时报错:


环境准备:

(1)准备好pycharm专业版,社区版没有连接远程服务器的功能

(2)远程服务器ubuntu20.04,已安装好docker

一、配置远程服务器的docker容器

1.启动并运行交互式容器:

docker run --gpus all --name="xiao-pycharm" -it -p 11740:22 -v /sda1/xiao/pycharm:/home python3.8_torch1.8.2:1.0 /bin/bash

这里需要映射主机端口到容器端口,后续就是通过端口来连通容器的。

-p 11740:22:这里主机端口8080, 容器端口是22

2.进入交互式后修改容器的root密码

passwd

3.给容器安装openssh-server和openssh-client

apt-get install openssh-server
apt-get install openssh-client

如果安装时出现报错:

1)可以先更新源:

apt-get -y update

2) 再卸载原有的openssh-server和openssh-client:

sudo apt-get autoremove openssh-client openssh-server

 4. 修改SSH配置文件以下选项

vim /etc/ssh/sshd_config

 以上命令打开sshd_config文件,在文件最后面添加以下内容:

PermitRootLogin yes #允许root用户使用ssh登录
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1

5. 重启ssh服务

/etc/init.d/ssh restart

6. 退出容器,连接测试

注意:以上2-5步骤都是在容器内部操作的。

ssh root@127.0.0.1 -p 11740

root:容器内部系统的root账号,不是服务器的用户账号

127.0.0.1:服务器本机ip

-p 端口号:这里的端口就是我们在步骤1 启动容器时映射的主机端口号11740,不是容器的端口22

 这样就测试连接成功了,接下来就是到我们本机windows系统的pycharm连接docker容器了。

 二、配置pycharm并连接docker容器

1.配置SFTP连接

 

点击SFTP之后输入连接名称,这里写的名称是“test”

在host里填写服务器的ip地址,Port填写前面开放的端口:

 然后设置本地和远程服务器的樱色路径,这里的Local path表示本地的文件路径,Deployment path表示服务器的路径,这里将本地的文件映射到了/home目录下:

2. 上传本地代码数据到docker容器中并运行

然后就可以将本地的代码和资源文件Upload到服务器里的容器里,同时这里有一个Sync功能,可以自动检查服务器容器和本地文件资源的区别,及时同步:

 3.设置python编译器:

 

 

 

 

 设置好之后,远程python解释器就可以run代码了

三、可能遇到的一些问题:

1.pycharm连接docker容易时,在重启容器之后提示连接不上,进入容器,输入以下命令:

/etc/init.d/ssh restart

2.报错:kex_exchange_identification: read: Connection reset by peer

1、使用VNC的方式登录云服务器
2、操作命令 vi /etc/hosts.allow
3、按i进入编辑模式,最后添加sshd: ALL #就是允许所有ip主机均能连接本机
4、Esc退出编辑模式,:wq退出保存
5、重启sshd服务 systemctl restart sshd

3.如果提示:ERROR:systemctl:the ExecStartPre control process exited with error code

就输入以下代码:

rm -rf /var/run/sshd/
service ssh restart

4.使用xftp连接虚拟机时报错:


在这里插入图片描述
检查sshd服务是正常开启的,防火墙也没阻止
网上发现是新版的sshd可能与xftp存在兼容性问题
解决方法:在/etc/ssh/sshd_config最后增加以下一行

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1

然后重启sshd服务或者重载服务配置文件

systemctl reload sshd

重新使用Xftp连接,成功!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值