数值计算引擎:搭建远程容器开发环境
Build VS Code Remote Docker Development Environment
大型CAE软件开发技术栈通常依赖多个第三方库,因此从零开始配置开发、编译、运行等环境通常较为繁琐。但随着公司的发展壮大,却经常需要为新加入的成员配备相应的开发环境;另外,有时候也需要为软件多个不同配置准备相应的环境。这种重复性的工作会消耗团队许多时间成本。
由于容器提供了轻量级的、独立的运行环境,可以考虑将软件开发、编译、运行等环境打包成镜像,然后根据需要生成对应的容器即可。而且,VS Code Remote Developement 插件也提供了针对远程容器的开发支持。
本文以数值仿真引擎开发环境为例记录搭建VS Code远程容器开发环境的流程。
一、服务器端配置
1.1. 下载、配置Docker Desktop
下载并安装Docker Desktop,配置容器镜像位置及镜像源,
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-hangzhou.aliyuncs.com","https://docker.mirrors.ustc.edu.cn"]
}
1.2 拉取镜像
docker pull intel/oneapi-hpckit
1.3 生成容器
docker run -itd -p 10022:22 -v /D/Docker/DockerShare:/data --name yqdev01 intel/oneapi-hpckit
1.4 配置容器
运行以下命令,进入容器,
docker exec -it yqdev01 /bin/bash
1.4.1 配置系统镜像源
修改/etc/apt/sources.list文件,增加以下镜像源,
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
1.4.2 安装文本编辑器vim
apt-get install vim
1.4.3 配置SSH服务
apt-get update
apt-get install openssh-server
apt-get install openssh-client
apt-get install ssh
修改sshd配置文件,
vim /etc/ssh/sshd_config
重新启动ssh服务,并将其设为开机自启,
/etc/init.d/ssh restart
1.4.4 安装常用第三方库
安装以下常用第三方库,
build-essential libgtest-dev libhdf5-serial-dev libeigen3-dev libarpack2-dev petsc-dev
修改配置文件以配置Intel oneAPI环境变量,
vim ~/.bashrc
1.4.5 重新启动容器
Ref. from Developing a Visual Studio Code Project for SSH Development
It is important to note that the VSCode backend server continues to run after you close the Remote-SSH connection. Therefore, the VSCode backend will not see any changes you make to the vscode-remote-ssh-env-setup.sh script unless the remote VSCode backend is forced to exit.
1.4.6 打包容器镜像
二、客户端配置
2.1 VS Code配置
下载VS Code,然后安装以下插件,便可通过Remote Development插件在Remote Docker Container中进行开发了。
Task Explorer Output Colorizer Git Extension Pack Remote Developement Remote X11 | |
C/C++ Extension Pack C++ TestMate | |
Modern Fortran FORTRAN InstelliSense Fortran Breakpoint Support | |
Extension Pack for Intel Software Developer Tools |
2.2 连接Remote Docker Container
VS Code内添加远程主机配置,便可以通过Remote Development插件远程开发了。
Host yqdev01HostName 192.168.0.100Port 10022User rootForwardAgent yes
附录I:CMake Presets for VS Code
{"version": 4,"configurePresets": [{"name": "linux_default","hidden": true,"displayName": "Default Linux Config","description": "Default build using Unix Makefiles generator","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/build/${presetName}","cacheVariables": {"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}","CMAKE_BUILD_TYPE": "Debug" }}]
}
参考资料
Docker Desktophttps://www.docker.com/products/docker-desktop
Kuberneteshttps://kubernetes.io/
VS Code Remote Developmenthttps://code.visualstudio.com/docs/remote/remote-overview
Using Visual Studio Code* to Develop Intel® oneAPI Applicationshttps://www.intel.com/content/www/us/en/docs/oneapi/user-guide-vs-code/2024-2/overview.html
CMake Presetshttps://cmake.org/cmake/help/latest/manual/cmake-presets.7.html