在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。
相关文章:

在VScode中添加Linux中的Docker容器中的Python解释器
VScode编辑器在安装好Python插件之后会自动选择环境变量中排序最高的那一个解释器作为默认解释器,而想要额外添加新的Python解释器就需要自己设置。 VScode编辑器安装在本地电脑 支持Python的docker安装在远程服务器 第一步,在/usr/local/下新建pytho…...

无法将“django-admin”项识别为cmdlet,函数,脚本文件或可运行程序的名称问题
无法将“django admin”项识别为cmdlet,函数,脚本文件或可运行程序的名称问题 小提示:首先检查一下有没有拼写错误!!!没有的话请继续 我们要知道django装到哪里去了 pip show django 注意:3.0…...

乐友商城学习笔记(十五)
无状态登陆原理 在服务器端保存session 无状态不需要session,把登陆状态保存在cookie中 jwtrsa token:登陆时, jwt oath2 jwt:头信息(jwt) 载荷(用户信息,签发人,签发时…...

目标检测论文阅读:CBNet算法笔记
标题:CBNet: A Composite Backbone Network Architecture for Object Detection 期刊:TIP2022 论文地址:https://ieeexplore.ieee.org/document/9932281/ 官方代码:https://github.com/VDIGPKU/CBNetV2 作者单位:北京大…...
vue前端与Java后端进行跨域交互
1.后端的几种解决方法 1.在Controller上面加上CrossOrigin 2.写一个配置文件并且在Controller层加上注解CORSConfig package com.wolwo.langyage.base.util;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configurat…...

【设计模式】2.抽象工厂模式
抽象工厂模式 前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、传智播客只培养计算机软件专业的学生等。 这些工厂只生产同种类产品,同种类产品称为同等级产品,也就是说:工厂方法模式…...

Telnet 基础实验1: Telnet 实验
Telnet 基础实验1: Telnet 实验 拓扑图 配置命令 R1 的配置 undo ter mo sys sys R1 interface g0/0/0 ip address 192.168.1.1 255.255.255.0 qR2 的配置 undo ter mo system-view sysname R2 interface g0/0/0 ip address 192.168.1.2 255.255.255.0 q两台设…...

机器学习经典算法——决策树(Decision Tree)
决策树的基本原理 决策树是⼀种分⽽治之的决策过程。⼀个困难的预测问题,通过树的分⽀节点,被划分成两个或多个较为简单的⼦集,从结构上划分为不同的⼦问题。将依规则分割数据集的过程不断递归下去。随着树的深度不断增加,分⽀节…...

MySQl总结
文章目录MySQL数据库的常见考点1、ACID事务原理事务持久性事务原子性MVCC基本概念MVCC基本原理undo logundo log版本链readviewMVCC实现原理RC读已提交RR可重复读MVCC实现原理总结2、并发事务引发的问题3、事务隔离级别4、索引索引结构BTreeHash面试题索引分类思考题语法性能分…...
【学习笔记】NOIP爆零赛7
结论专场,结果被踩暴了 青鱼和序列 赛时的做法是,维护∑aii\sum a_i\times i∑aii的取值,发现只和最后一次操作222的位置有关,于是递推O(n)O(n)O(n)解决。 赛后发现还有更神奇的结论 第二个结论是,第一次进行操作…...

一文读懂账号体系产品设计
一、账号体系的概念及价值账号体系是用户在各平台上的通行证。平台给与用户可持续的服务,用户在平台上获取价值,中间的媒介,便是账号体系。阿境将其理解为维系用户与平台之间的枢纽。注:本文中,账号账户,二…...

从“入门”到“专家”,一份3000字完整的性能测试体系的知识分享
随着科技的飞速发展,软件产品广泛应用于各个行业领域,人们对计算机和网络的依赖性越来越大,对新奇事物也越来越感兴趣,成千上万的用户活跃在庞大的网络系统中,这给提供服务的系统带来严重的负荷,"高并…...

构建对话机器人:Rasa3安装和基础入门
在开源对话机器人中,Rasa社区很活跃,在国内很多企业也在使用Rasa做对话机器人,有rasa开发经验的往往是加分项。 当年实习的时候接触到了Rasa,现在工作中也使用Rasa,因此,写写一些经验文档,有助后…...

Spark计算框架入门笔记
Spark是一个用于大规模数据处理的统一计算引擎 注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎 既然说到了Spar…...

入职数据分析公认的好书|建议收藏
众所周知,数据分析经常出现在我们的日常生活中,各行各业都需要数据分析。可你知道什么是数据分析?它在企业里到底扮演什么角色?以及如果我们自己也想拥有数据分析的能力,以便更好的满足数据分析的需求,我们…...
Linux查找文件和目录,重定向输出 ,系统默认运行级别的查看和设置理论和练习
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...

Redis源码---键值对中字符串的实现,用char*还是结构体
目录 前言 为什么 Redis 不用 char*? char* 的结构设计 操作函数复杂度 SDS 的设计思想 SDS 结构设计 SDS 操作效率 紧凑型字符串结构的编程技巧 小结 前言 对于 Redis 来说,键值对中的键是字符串,值有时也是字符串在 Redis 中写入一…...
算法 - 剑指Offer 表示数值的字符串
题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 …...

初识机器学习
监督学习与无监督学习supervised learning:监督学习,给出的训练集中有输入也有输出(标签)(也可以说既有特征又有目标),在此基础上让计算机进行学习。学习后通过测试集测试给相应的事物打上标签。…...

VsCode安装PlatformIO 开发ESP arduino,买的板子或者随便ESP,PlatformIO添加Board(不是自定义Board)
这次主要记录怎么给新建选板子的时候没有的板子下程序 我这里是一块 WiFi Kit 32 (V3) PlatformIO里面只有到V2 先从头开始,安装PlatformIO 安装PlatformIO 直接搜索安装 安装有时候会比较慢,左侧出现蚂蚁图标之后点击会显示 右下角会提示正在安…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...