本文基于以搭建Go的开发环境为例子,在cvm上搭建vscode的容器开发环境
vscode简介
Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。
选择合适自己的系统,本文以windows10为例
docker简介
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度。 Docker容器与虚拟机类似,但二者在原理上不同。
Docker可以简单理解为是一个隔离环境的容器,在linux上可以配置多个不同环境的容器,里面的编译器和系统库互不干扰,比如一个容器里是openssl高版本,一个容器是openssl低版本,但是用编译出来的二进制是取决于当前容器的动态库的版本,在高版本容器中编译的就是需要高版本的openssl运行环境,在低版本容器中编译的就是需要低版本的openssl运行环境。简单理解为Docker非常适合搭建开发环境,可以通过实现好的Dockerfile快速搭建好一个开发环境,而不需要每次换cvm或者是机器再去配置。
CVM
本教程使用CVM是腾讯云的,但是只要是linux系统就可以,或者mac也都可以。腾讯云地址如下cloud.tencent.com/product/cvm, 我的cvm是4核8G的centos7
开干
- 打开vscode,在插件栏中搜索remote
2. 安装上图的插件
- 然后打开左侧栏的插件,选中他的设置
- 然后按下图选择
- 对该文件进行编辑
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host tencentCloud
HostName 0.0.0.0 //需要远程ssh连接的linux的ip, 如果为wsl应该可以指定本机的ip
User root // ssh登录的用户名
Port 22 // ssh登录的端口
Host brpc
HostName 0.0.0.0 // 同上
User root // 同上
Port 9999 // 同上
- 然后点击对应服务器的+号,输入密码即可登录远程linux,然后设置免密登录
免密登录的过程如下,打开windows的powershell,或者cmd(mac打开iterm)
ssh-keygen -o #一路回车即可
cat C:\Users\12236\.ssh\id_rsa.pub # mac为 cat ~/.ssh/id_rsa.pub
将cat出来的内容ctrl(cmd) + c,然后打开vscode登录的Linux ctrl(cmd) + ~ 唤出控制台
cd ~/.ssh/
vim authorized_keys #如果没有则创建
#将公钥拷到这个文件里
:wq
然后免密登录的设置成功了,后续容器的~/.ssh/目录直接挂在到cvm上的~/.ssh上,这样就可以不用重复设置并且可以重复使用免密登录了
安装docker
接下来在cvm的linux进行操作
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
启动一个ubuntu容器并在容器中安装ssh
docker run -itd --name brpc -v /root/brpc:/root/ -v /root/.ssh:/root-p 9999:22 ubuntu
docker exec -it brpc /bin/bash
进入容器后,在容器的终端安装ssh
apt-get update
apt-get install vim
apt-get install openssh-server
vim /etc/ssh/sshd_config
找到对应的行做处理,处理结果如下
#PermitRootLogin prohibit-password #注释掉这一行
PermitRootLogin yes #添加这行
AuthorizedKeysFile .ssh/authorized_keys #修改这一行的结果
然后保存这个配置,再重启ssh
/etc/init.d/ssh restart
然后在vscode上的remote_ssh插件中配置上刚刚设置的容器的登陆配置
Host brpc
HostName 0.0.0.0 // 同上
User root // 同上
Port 9999 // Port为容器映射到22的端口,我这里是9999,端口可能会被cvm厂商的安全组给屏蔽了,记得去设置开启
然后同样的方式用vscode登录到容器中,然后下载go1.18
wget -c https://dl.google.com/go/go1.18.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
sudo vim /etc/profile
添加以下环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY="https://goproxy.cn,direct"
#然后在GOPATH目录下创建文件夹
mkdir -p src
mkdir -p bin
mkdir -p pkg
go version
然后该容器就可以当作一个开发环境使用了,不同的容器可以配置不同的开发环境,比如一个是go17一个是go18都是ok的。c++也是同样的道理。