目录
目录
一、配置远程服务器的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连接,成功!