概述:最近感觉使用jupyter notebook开放项目存在整体性不强,因此决定使用再构建一套pytorch的开发环境来,具体的目标为:在本地进行编码,自动同步到远程服务器中的docker环境内执行,本文记录这套环境的完整构建过程。
)
docker配置(远程)
整体思路:在docker中安装ssh,然后将docker的ssh端口映射到宿主机上,远程客户端直接通过ssh访问docker内的环境。
0. 保存已有docker
在我的应用场景下,已经有了一个使用了很久的pytorch_cuda 的docker环境,这次我希望使用这个docker中的环境作为pychram中要进行调用的环境,因此需要首先将已有的docker环境保存,然后在重新创建容器的时候增加映射即可。保存已有容器中的内容代码如下:
1 | docker commit ${containerName} ${imageTag} |
1. 设置docker对外映射
在我的实际环境中由于已经有了一个已经运行了很久的docker,要在这个docker上增加新的端口映射,因此比较复杂,如果使用新的镜像可以直接跳过保存保存已有镜像这些步骤,直接在docker创建时设置端口映射。
1 | sudo docker run \ |
2. 安装、开启docker的ssh服务
大部分docker的镜像中并没有安装ssh服务,因此一般需要自己安装,在docker中输入下面命令进行ssh安装:
1 | apt update |
更改root用户的密码,为了后续登录:
1 | passwd root |
开启docker服务,在docker中输入下面命令:
1 | service ssh start |
更改配置文件:
1 | vim /etc/ssh/sshd_config |
最后重启ssh服务和docker镜像。
1 | service ssh restart # 重启ssh服务,使ssh配置文件更改生效(docker内执行) |
到这里就已经完成了远程docker内的部署,在宿主机使用新更改的root密码尝试ssh登录docker,能正常登录则设置成功。
pycharm配置(本地)
1. pycharm与远程docker建立连接
打开PyCharmTools > Deployment > Configuration, 新建一个SFTP服务器,设置远程登录docker ssh的配置、根目录(想要使用作为根目录的任意docker中的目录)等,
最后在Mappings中配置路径,这里的路径是你本地存放代码的路径,与刚刚配置的Root Path相互映射(意思是Mapping里本机的路径映射到远程的Root Path),方便以后在本地和远程docker中进行代码和其他文件同步。
测试连接,能够成功连接那么这一步就完成了。
2. 配置远程解释器
点击PyCharm的File > Setting > Project > Project Interpreter右边的设置按钮新建一个项目的远程解释器:
点击Add按钮新增远程解释器,然后选择在上面一步中已经配置好的连接。x
配置完成后等待解释器同步,同步完成后远程解释器可以显示全部的版本。
最后就是等待文件本地文件同步到远程服务器了。完成后即可直接在本地编辑文件,保存文件则自动同步到服务器上,执行则为在远程环境中执行。