PyCharm + Jupyter + Docker 搭建远程机器学习开发环境
背景
作为机器学习开发者,一般都在远程连接服务器开发,每次搭建本地环境实在是太麻烦了啊!本文主要记录个人远程开发环境的搭建过程。
本文需要一定的背景知识,已了解如何使用 docker 和 pycharm!No BB,下面直接上!
Docker 配置
创建容器
前提是容器中 Python 开发环境已搭建好,例如本人执行命令:
后台执行容器:
1
docker run -d -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env
然后再进入容器中:
1
docker exec -it dreamhomes bash
创建容器并进入交互界面:
1
docker run -it -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env bash
进入容器
如果容器内未安装ssh服务则需安装,如果已安装则省略此步骤:
1 | apt update |
安装完成后查看ssh服务是否启动:
1 | ps -e |grep ssh 或者 service ssh status |
如果终端出现sshd
说明已成功启动!否则重启ssh
服务
1 | service ssh start |
设置容器密码
root用户执行:passwd
命令,然后在终端输入容器登录密码!
修改容器配置vim /etc/ssh/sshd_config
:
1 | PermitRootLogin prohibit-password //注释 |
重启ssh服务激活配置
1 | service ssh restart |
测试远程连接容器
1 | ssh root@IP_ADDRESS -p 8022 |
输入密码登录成功!
PS:对于购买的远程服务器,例如阿里云等,需要在服务器配置中打开对应的端口才能访问,否则远程连接会出现错误!!!
PyCharm 配置
个人感觉最好同步到服务器目录而不是将文件同步到容器中!
打开Pycharm,在菜单Tools > Deployment > Configuration
中新建一个SFTP
服务器:
SSH configuration
:配置为服务器IP和映射的端口;例如我上面设置的端口号为8022
;这将本地文件同步到容器中!Root path
:选择容器内路径
Mapping选项卡中设置文件夹同步路径:
在Tools > Deployment > Option
中可以配置更多细节,例如设置strl + s
保存时上传:注意需要选择自动上传。
配置远程解释器
为项目新建一个 SSH interpreter
:
现在就可以远程interpreter来测试项目啦!
Jupyter lab 配置
指定宿主机与容器的映射端口8888
,例如我执行命令:
1 | docker run -itd -p 8022:22 -p 8888:8888 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env |
进入容器中开启jupyterlab
:
1 | jupyter lab --ip=0.0.0.0 --allow-root |
浏览器访问:Server_IP:8888,拷贝token输入即可打开jupyter lab!
此处还可以配置密码访问,但是个人感觉还是没必要!
问题
- 一段时间后远程连接出现错误!
查看ssh
服务是否关闭,如果关闭后需重新打开!、:
1 | service ssh status |
- 直接配置远程解释器后不能在python中执行文件,报错:
[Errno 2] No such file or directory
项目路径映射为空,重新设置映射路径: