当前位置: 首页 > news >正文

在VScode中添加Linux中的Docker容器中的Python解释器

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 8022User 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。

点击“运行和调试”选项,接着点击“打开文件”,填入刚刚查找的launch.json路径(/root/.vscode-server/bin/441438abd1ac652551dbe4d408dfcec8a499b8bf/extensions/debug-auto-launch/.vscode),点击“确定”就可以打开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。

 

http://www.lryc.cn/news/22550.html

相关文章:

  • 无法将“django-admin”项识别为cmdlet,函数,脚本文件或可运行程序的名称问题
  • 乐友商城学习笔记(十五)
  • 目标检测论文阅读:CBNet算法笔记
  • vue前端与Java后端进行跨域交互
  • 【设计模式】2.抽象工厂模式
  • Telnet 基础实验1: Telnet 实验
  • 机器学习经典算法——决策树(Decision Tree)
  • MySQl总结
  • 【学习笔记】NOIP爆零赛7
  • 一文读懂账号体系产品设计
  • 从“入门”到“专家”,一份3000字完整的性能测试体系的知识分享
  • 构建对话机器人:Rasa3安装和基础入门
  • Spark计算框架入门笔记
  • 入职数据分析公认的好书|建议收藏
  • Linux查找文件和目录,重定向输出 ,系统默认运行级别的查看和设置理论和练习
  • Redis源码---键值对中字符串的实现,用char*还是结构体
  • 算法 - 剑指Offer 表示数值的字符串
  • 初识机器学习
  • VsCode安装PlatformIO 开发ESP arduino,买的板子或者随便ESP,PlatformIO添加Board(不是自定义Board)
  • golang 复杂数据结构解析
  • 不怕被AirTag跟踪?苹果Find My技术越来越普及
  • Linux驱动中的open函数是如何从软件打通硬件呢?
  • Java 基础语法
  • python下如何安装并使用matplotlib(画图模块)
  • 系统分析师---计算机网络思维导图
  • 算法练习(七)数据分类处理
  • nohup ./startWebLogic.sh >out.log 2>1 解析
  • OpenCV 坡度计算(基于DEM,C++版本)
  • IDEA上使用git,知道这几步操作就够了!
  • Shell的退出状态(if语句判断的是某个命令的退出状态)