VScode编辑器在安装好Python插件之后会自动选择环境变量中排序最高的那一个解释器作为默认解释器,而想要额外添加新的Python解释器就需要自己设置。
VScode编辑器安装在本地电脑
支持Python的docker安装在远程服务器
第一步,在/usr/local/下新建python/app文件夹。
命令:mkdir -p /usr/local/python /usr/local/python/myapp
python容器配置的应用目录将映射为/usr/local/python/myapp。
第二步,创建python容器。
命令:docker pull python
docker images -a
docker run -d --name mypython -p 8022:22 -v /automl:/workspace/automl -it python:latest /bin/bash
docker ps -a
注释:
[-p 8022:22]:把docker的端口号22映射到服务器的端口号8022。
[-d]:容器后台运行,避免退出容器后容器自动关闭。
[-v]:挂载和同步目录,服务器和docker内有一个文件夹保持同步。
[-it]:确保docker后台交互运行。
[python:latest]:镜像名。
[/bin/bash]:docker内要运行的指令。
第三步,在容器内安装ssh服务。
# 进到IMAGE为python的容器内
命令:docker attach [容器ID]
或 docker exec -it [容器ID] /bin/bash
# 更新apt-get
命令:apt-get update
# 安装vim
命令:apt-get install vim
# 安装openssh-server
命令:apt-get install openssh-server
# 设置root密码
命令:passwd
第四步,配置/etc/ssh/sshd_config文件。
在文件/etc/ssh/sshd_config中添加下面的代码:
# 启用公钥私钥配对认证方式
PubkeyAuthentication yes
# 允许root用户使用ssh登录
PermitRootLogin yes
第五步,重启ssh服务。
# 重启ssh服务
命令:/etc/init.d/ssh restart
或 service ssh restart
第六步,退出docker后,验证端口映射。
命令:docker ps -a
sudo docker port [容器ID] 22
若结果输出“0.0.0.0:8022”,则说明端口映射正确。
第七步,在本地电脑连接docker。
当退出docker后,在本地电脑连接docker,结果显示“ssh connection refused.”,这是因为退出docker后,ssh会被关掉。可以先通过命令“docker attach [容器ID]”进入container,然后输入命令“/etc/init.d/ssh restart”启动ssh服务。
# 在本地电脑打开cmd,输入ssh命令,回车后输入第三步中设置的root连接密码,就可以从本地电脑登录远程服务器的docker。
命令:ssh root@x.x.x.x -p 8022
第八步,使用VSCode连接远程主机上的docker container。
打开VScode编辑器,按下快捷键“Ctrl+Shift+X”,查找安装“Remote Development”。安装完成后需要点击“reload”,然后按下快捷键“Ctrl+Shift+P”,输入“remote-ssh”,选择“open SSH Configuration file”,在文件C:\Users\Administrator\.ssh\config中添加如下内容:
# Host随便起名字
Host AutoML_docker
# HostName是服务器的IP地址
HostName x.x.x.x
# Port是docker映射到服务器上的端口号
Port 8022
User root
保存后,按下快捷键“Ctrl+Shift+P”,输入“remote-ssh”,选择“Connect to Host...”,然后点击“AutoML_docker”,接着选择“Linux”,最后按提示输入第三步中设置的root连接密码,在左下角显示“SSH:AutoML_docker”,说明已经成功连接docker。
第九步,在服务器docker中配置VScode debugger。
成功连接docker之后,按下快捷键“Ctrl+Shift+X”,查找“Python”,并安装在服务器docker中。然后重启VSCode。
重新连接docker,按下快捷键“Ctrl+Shift+P”,输入“python: select interpreter”,点击“选择解释器”,就会列出在系统中找到的Python环境,点击需要的python解释器即可。
确定在VScode中是否添加了Python解释器:
1)先在桌面新建一个文件夹,并命名为“aaaa”;
2)在VScode中,点击“File”,并选择“Open Folder”,将桌面新建的“aaaa”添加进来;
3)添加“aaaa”后点击确定,并选择“Yes,I trust the authors”;
4)在添加进来的“aaaa”项目中点击“New fiel…”,创建文件text.py;
5)在创建好的text.py中输入代码“print(‘hello world’)”,并点击运行按钮,即可在终端得到运行结果。
执行上述步骤之后,可在VScode右下角看到“Python”的内容,说明在VScode中添加了Python解释器。
可以通过命令“docker attach [容器ID]”进入Python容器,然后在容器中使用命令“find / -name launch.json”查找launch.json。
按下快捷键“Ctrl+Shift+D”,点击“运行和调试”,点击“安装扩展”,就会在“扩展”选项列出在系统中找到的“@category:debuggers”。
按下快捷键“Ctrl+Shift+D”,接着点击“打开文件”,填入刚刚查找的launch.json路径(/root/.vscode-server/bin/441438abd1ac652551dbe4d408dfcec8a499b8bf/extensions/debug-auto-launch/.vscode/launch.json),点击“确定”就可以打开launch.json文件。
编辑launch.json文件,把文件中的代码全部换成下面的代码:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "python",
"request": "launch",
"name": "Python: Current File (Integrated Terminal)",
"skipFiles": [
"<node_internals>/**"
],
"program": "${file}"
}
]
}
VScode debugger配置完成之后,可以选择刚才配置的解释器来逐行调试docker内的代码。因为docker内的代码是通过-v与服务器同步的,所以修改docker内的代码后,服务器上的代码也会跟着改变,需要git时,就只需在服务器端设置,而不用在docker内设置。
第十步,退出容器,并将容器保存为新的镜像。
命令:docker ps -a
docker images -a
docker commit [OPTIONS] [容器ID] [新的镜像名称:新的镜像标签]
[OPTIONS]说明:
[-a]:提交的镜像作者。
[-m]:提交时的说明文字。
[-p]:在commit时,将容器暂停。
第十一步,基于新的镜像创建并运行新的容器。
命令:docker run -t -i -p 8022:22 --name [新的容器名称] [新的镜像名称:新的镜像标签] /bin/bash
# 退出新的容器,重启新的容器
命令:systemctl restart docker
docker start [新的容器ID]
# 新的容器启动成功,会显示相应的端口号
命令:docker ps -a
# 只要保证新的容器内22端口成功启动,就可以进行远程连接。
命令:sudo docker port [新的容器ID] 22
# 进到新的容器内
命令:docker attach [新的容器ID]
或 docker exec -it [新的容器ID] /bin/bash
# 重启ssh服务
命令:/etc/init.d/ssh restart
或 service ssh restart
点击“远程资源管理器”选项,接着点击“SSH—AutoML_docker—在当前窗口连接”,然后按提示输入第三步中设置的root连接密码,在左下角显示“SSH:AutoML_docker”,说明已经成功连接docker。