失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > pycharm + docker 远程调试容器内程序

pycharm + docker 远程调试容器内程序

时间:2021-06-21 04:06:55

相关推荐

pycharm + docker 远程调试容器内程序

pycharm + docker 远程调试容器内程序

一、首先假设你已启动了一个docker容器,并在启动时将容器的22端口映射到宿主机的10022端口

启动示例:

nvidia-docker run -it -p 5000:80 -p 10022:22 -v ~/longlongaaago/workspace/docker:/root/workspace --name "longlongaaago" kaixhin/cuda-caffe:8.0

启动后使用xshell远程连接宿主机的10022端口是无法连接成功的,此时我们需要进入docker容器内部进行一些操作:

二、进行容器内部修改

docker exec -it 容器名 /bin/bash

1、修改root用户密码

passwd

2、首先检查容器内部是否以安装 openssh-server与openssh-client 若没安装执行一下命令安装

apt-get install openssh-serverapt-get install openssh-client

3、修改SSH配置文件以下选项

vim /etc/ssh/sshd_config

# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释RSAAuthentication yes #启用 RSA 认证PubkeyAuthentication yes #启用公钥私钥配对认证方式PermitRootLogin yes #允许root用户使用ssh登录

4、启动sshd服务

/etc/init.d/ssh restart

5、退出容器,连接测试

ssh root@127.0.0.1 -p 10022

输入密码成功进入容器内部即配置成功

6、如若需要将修改后的容器重新保存为镜像,则可进行相应处理,本文直接使用修改后的镜像进行后续操

三、在PyCharm里配置部署环境

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

输入如下图配置,注意这里的端口是你刚刚设置的映射到容器22端口的宿主机中的端口,我这里使用的是8022,账号密码是你刚刚自己设置的,这里的Root Path设置一个远程docker容器里的路径:

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

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

4. 在PyCharm里配置远程解释器

点击PyCharm的File > Setting > Project > Project Interpreter右边的设置按钮新建一个项目的远程解释器:

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

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

左边是本地的文件,修改之后可以随时右键deployment->upload到远程主机,或者直接在本地调试运行;最右边是远程主机的文件,假如直接在远程修改了文件刷新一下同样可以右键下载到本地,但是我不建议这样做,因为这样很容易带来冲突(毕竟没有很好的版本控制)。目前最好的实践是在局域网的服务器上,时延低,同步速度快。

常见问题:

1. 最常见的问题就是docker容器停了以后里面的SSH服务也会相应停止,因此当你发现自己某一天连不上的时候,记得去docker里重启一下ssh服务:

$service ssh restart

感谢 @丁果 对这个问题提出的解决方案:

“可以在run的时候加上--restart=always,同时ssh启动的写到dockerfile里去。”

2. 在容器中执行apt update的时候可能会出现0% working 的问题

感谢 @奥古斯都 提出该问题以及解决方案:

”这里不是源的问题,因为容器环境太过纯净,这里需要安装apt-transport-https这个deb文件,下载的时候也要注意不要下载最新的版本,否则也会出现依赖问题,要下载和当前docker容器内的apt相匹配的版本。“

参考:

/thoughtful-actors/p/10709943.html

/a/324405587_465229

如果觉得《pycharm + docker 远程调试容器内程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。