在有网环境下,宿主机只需要安装remote-development插件,然后选择docker开发方式就可以了。但是在无网环境下,由于docker内部需要vscode-server,所以无法正常启动;有网环境这个过程是自动的。
一、先去vscode官网下载vscode,选择对应版本,然后在宿主机安装。下载链接
二、打开vscode进行 插件管理页面,搜索开发需要的插件,点击插件名称就可以跳转到下载链接
在打开的网页中下载插件
我需要的常用插件如下
宿主机
ms-azuretools.vscode-docker-1.22.0.vsix
ms-vscode-remote.remote-containers-0.232.6.vsix
ms-vscode-remote.remote-ssh-0.79.2022040715.vsix
ms-vscode-remote.remote-ssh-edit-0.80.0.vsix
ms-vscode-remote.vscode-remote-extensionpack-0.21.0.vsix
容器中
cschlosser.doxdocgen-1.4.0.vsix
donjayamanne.githistory-0.6.19.vsix
eamodio.gitlens-12.0.6.vsix
hars.CppSnippets-0.0.15.vsix
jeff-hykin.better-cpp-syntax-1.15.13.vsix
llvm-vs-code-extensions.vscode-clangd-0.1.15.vsix
ms-vscode.cpptools-1.10.0@linux-x64.vsix
ms-vscode.cpptools-themes-1.0.0.vsix
twxs.cmake-0.0.17.vsix
先安装宿主机的插件可以在宿主机使用"code --install-extension 插件名"的形式安装
三、下载vscode-server
1、先查看vscode的id,点击vscode标题栏中的help中的abort,可以查看
将id拼接到如下格式链接中,https://update.code.visualstudio.com/commit:vscode的help按钮中的abort的commit/server-linux-x64/stable,打开这链接就可以下载
四、在容器中启动时,将vscode-server解压到容器中,并更改名字,离线安装插件就可以了。我整理出的Dockerfile如下
FROM base-img:v1.0
ADD remote/vscode-server-linux-x64.tar.gz /root/.vscode-server/bin/
COPY remote/vs-code-extensiton /tmp/vs-code-extensiton
#you cat get id from vscode abort
Run mv /root/.vscode-server/bin/vscode-server-linux-x64 /root/.vscode-server/bin/e18005f0f1b33c29e81d732535d8c0e47cafb0b5 && \
cd /root/.vscode-server/bin/e18005f0f1b33c29e81d732535d8c0e47cafb0b5/bin && \
for plugin in $(ls /tmp/vs-code-extensiton);do ./code-server --install-extension /tmp/vs-code-extensiton/$plugin;done
整个镜像编译工程在git仓库
五、将四步骤中的仓库改名为.devcontainer,并且放到要打开的目录。用vscode使用remote-container方式打开
等待执行完成,就可以了。