在我们利用远程服务器部署的docker调试深度学习模型时,需要将代码传来传去,很不方便。这里我们介绍pycharm连接远程服务器docker的方法。
- 首先我们启动一个新的pytorch容器,命令如下。关于此步骤更详细的说明,参见ubuntu+docker使用nvidia显卡运行pytorch。6006端口是用来运行tensorboard的,这里重要的是22端口。如果希望通过ssh远程连接docker,需要对容器的22端口做端口映射。
nvidia-docker run -p 6009:6006 -p 23:22 -it -d --name="torch-remote" -v /home/serveradmin/leon:/workspace pytorch/pytorch:latest
2. 进入容器:
docker exec -it torch-remote bash
3. 更新容器的apt源,安装ssh和vim
apt-get update
apt-get install openssh-server
apt-get install vim
4. 使用vim打开并修改配置文件,找到PermitRootLogin prohibit-password
这一行,修改为PermitRootLogin yes
,允许通过ssh远程访问docker。
vim /etc/ssh/sshd_config
5. 创建docker中root用户的密码。
passwd root
6. 启动ssh服务,至此,服务器端配置完毕。
service ssh restart
7. 我们在PyCharm中创建一个新项目,命名为docker-remote。在Tools-Deployment-Configuration
中,按下图配置。注意Type
选择SFTP
,Port
是步骤1映射的端口,Password
是步骤5设置的密码。配置完成后,点击Test SFTP connection
,测试连接是否成功。
8. 配置本地文件上传至docker的目录:
9. 在PyCharm-Preferences-Project Interpreter
里,点击右上角的设置按钮,选择add remote
,配置如下图。注意Python interpreter path
指的是docker中python的路径。
10. 接着需要等待一会,待程序配置结束。点击Tools-Deployment-Automatic Upload
打开文件自动上传功能,上传文件需要一定时间。接着我们就可以实现远程运行和调试啦。