基于Docker搭建vscode开发环境

735 阅读4分钟

本文基于以搭建Go的开发环境为例子,在cvm上搭建vscode的容器开发环境

vscode简介

Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。

Vsc下载地址

image.png 选择合适自己的系统,本文以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

开干

  1. 打开vscode,在插件栏中搜索remote

image.png 2. 安装上图的插件

  1. 然后打开左侧栏的插件,选中他的设置

image.png

  1. 然后按下图选择

image.png

  1. 对该文件进行编辑
# 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 // 同上
  1. 然后点击对应服务器的+号,输入密码即可登录远程linux,然后设置免密登录

image.png

免密登录的过程如下,打开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++也是同样的道理。

以上就是全部过程了,当一个笔记记着