随手记录遇到的vscode无法通过远程插件连接到docker容器中Linux系统的问题。
1.问题描述
docker安装好Linux系统后,本想通过Windows系统上的vscode的Remote_SSH远程插连接docker中的linux系统进行远程开发,这样就不需要来回在Windows系统和Linux系统上来回同步文件,就算使用git做本地提交,也需要在两个系统之间来回进行文件同步。
考虑到使用vscode有丰富的插件,即使在docker容器中也可以远程安装插件以方便开发时使用,因此决定采用本地vscode+远程编译环境的形式。
Linux系统使用的是ubuntu 16.04的32位版本。系统安装好后可正常编译运行项目。本地vscode需要通过ssh连接到docker容器,但多次尝试后都提示启动vscode-server失败,原因并未明确提示。某度搜索看到某篇文章提醒到查看docker容器中的Linux系统上的报错日志,结果证明看日志确实是最快定位问题办法。日志提示node文件找不到,但查看Linux系统目录下的隐藏文件夹.vscode-server目录,node在vscode的commit_id对应目录下是存在的,但是一直提示找不到。
考虑先前使用的ubuntu 14.04的镜像是可以通过vscode远程进行连接的,于是从Ubuntu 14.04的docker容器中完整拷贝了.vscode-server目录来替换Ubuntu 16.04中对应目录,但依然提示“找不到文件”。分析对比了两个docker容器区别:同一个文件在Ubuntu 14.04的容器中能执行,但在Ubuntu 16.04不能执行,但node文件却都是64位的程序。
于是考虑32位的系统如何能运行64位的执行程序。根据下面的方法终于可以运行64的node执行程序,vscode远程连接时无法启动vscode-server的报错也随之消失。
2.解决方法:
在docker中安装的Ubuntu系统为32位,宿主机的Windows系统一般都是64位的,使用的Visual Code都是64位程序,如果需要通过ssh连接到docker容器,则需要容器内部.vscode-server目录下有node程序且可正常执行。但vscode-server能下载到的Linux版本都是64位程序,此时就需要32位的系统支持64位程序的运行。文章来源:https://www.toymoban.com/news/detail-830983.html
经过研究,安装gcc-multilib后可支持64位程序运行。Ubuntu下使用apt install 安装即可。64位程序运行其实是需要libc6-amd64库来运行,默认的32位系统下并不存在这个库。gcc-multilib本身是为了32位系统编译生成64位的库,但既然可以通过它编译出64位的库,也就可以通过它安装相关的依赖来运行64位的程序。文章来源地址https://www.toymoban.com/news/detail-830983.html
到了这里,关于解决VSCode远程SSH连接时提示vscode-server启动失败的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!