背景

作为机器学习开发者,一般都在远程连接服务器开发,每次搭建本地环境实在是太麻烦了啊!本文主要记录个人远程开发环境的搭建过程。

本文需要一定的背景知识,已了解如何使用 docker 和 pycharm!No BB,下面直接上!

Docker 配置

创建容器

前提是容器中 Python 开发环境已搭建好,例如本人执行命令:

  1. 后台执行容器:

    1
    docker run -d -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env

    然后再进入容器中:

    1
    docker exec -it dreamhomes bash
  2. 创建容器并进入交互界面:

    1
    docker run -it -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env bash

进入容器

如果容器内未安装ssh服务则需安装,如果已安装则省略此步骤:

1
2
apt update
apt install openssh-server

安装完成后查看ssh服务是否启动:

1
ps -e |grep ssh 或者 service ssh status

如果终端出现sshd说明已成功启动!否则重启ssh服务

1
service ssh start

设置容器密码
root用户执行:passwd命令,然后在终端输入容器登录密码!

修改容器配置
vim /etc/ssh/sshd_config:

1
2
#PermitRootLogin prohibit-password //注释
PermitRootLogin yes //添加

重启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!

此处还可以配置密码访问,但是个人感觉还是没必要!

问题

  1. 一段时间后远程连接出现错误!
    查看 ssh 服务是否关闭,如果关闭后需重新打开!、:
1
2
service ssh status
service ssh start
  1. 直接配置远程解释器后不能在python中执行文件,报错:[Errno 2] No such file or directory
    项目路径映射为空,重新设置映射路径:

联系作者