文章目录

  • 背景
  • Docker 配置
  • 创建容器
  • 进入容器
  • PyCharm 配置
  • Jupyter lab 配置
  • 问题
  • 联系作者


背景

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

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

Docker 配置

创建容器

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

  1. 后台执行容器:
docker run -d -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env

然后再进入容器中:

docker exec -it dreamhomes bash
  1. 创建容器并进入交互界面:
docker run -it -p 8022:22 --name='dreamhomes' -v /home/workspace:/home/workspace dreamhomes/dev-env bash

进入容器

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

apt update
apt install openssh-server

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

ps -e |grep ssh 或者 service ssh status

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

service ssh start

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

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

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

重启ssh服务激活配置

service ssh restart

测试远程连接容器

ssh root@IP_ADDRESS -p 8022

输入密码登录成功!

PS:对于购买的远程服务器,例如阿里云等,需要在服务器配置中打开对应的端口才能访问,否则远程连接会出现错误!!!

PyCharm 配置

PyCharm 需要是专业版,至于如何安装可以参考我的另一篇文章:PyCharm 2020.1

个人感觉最好同步到服务器目录而不是将文件同步到容器中!

打开Pycharm,在菜单Tools > Deployment > Configuration 中新建一个SFTP服务器:

SSH configuration:配置为服务器IP和映射的端口;例如我上面设置的端口号为8022;这将本地文件同步到容器中!

Root path:选择容器内路径

docker监控开源 docker远程开发_docker


Mapping选项卡中设置文件夹同步路径:

docker监控开源 docker远程开发_docker监控开源_02


Tools > Deployment > Option中可以配置更多细节,例如设置strl + s 保存时上传:注意需要选择自动上传

docker监控开源 docker远程开发_python_03


docker监控开源 docker远程开发_docker监控开源_04


配置远程解释器

为项目新建一个 SSH interpreter

docker监控开源 docker远程开发_pycharm_05


现在就可以远程interpreter来测试项目啦!

Jupyter lab 配置

指定宿主机与容器的映射端口8888,例如我执行命令:

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

进入容器中开启jupyterlab:

jupyter lab --ip=0.0.0.0 --allow-root

浏览器访问:Server_IP:8888,拷贝token输入即可打开jupyter lab!

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

问题

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