0.前言

我服了,vscode确实太香了。

1.远程主机配置

注意:以下基于CentOS7环境。

1.1 安装docker

一键安装脚本:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

可参考:CentOS Docker 安装 | 菜鸟教程

1.2 配置docker

在远程主机上:

  1. 创建文件daemon.json到目录/etc/docker:
{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
  1. 创建文件/etc/systemd/system/docker.service.d/override.conf:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
  1. 重启docker:
systemctl daemon-reload
systemctl restart docker.service

2.本地桌面配置

注意:以下基于Windows10桌面专业版环境。

2.1 安装OpenSSL

略,自带了。

2.2 生成ssh秘钥对

略,参见:配置VSCode-Remote-SSH - lightsmile’s Blog

注意,如我的~/.ssh/config中部分内容为:

Host tencent_cloud
    HostName xx.xx.xx.xx
    PreferredAuthentications publickey
    User root
    IdentitiesOnly yes
    # Port 22
    IdentityFile ~/.ssh/tencent_cloud_desktop

使用ssh免密登录的时候命令应该为:

ssh tencent_cloud

2.3 安装docker

下载docker.exe 并配置路径(其实配不配都可以,因为我把这个路径放到环境变量里进入shell还是没找到2333~。)

2.4 配置docker服务

创建一个context:

docker context create <context name> --docker "host=ssh://<user>@<host>"

以我上面的ssh为例,上面的命令可以为:

docker context create tencent_cloud --docker "host=ssh://tencent_cloud"

切换到上面的context:

docker context use <context name>

以上面生成的context:tencent_cloud为例,上面的指令为:

docker context use tencent_cloud

测试一下:

docker info

这里会输出和在远程主机上运行 docker info 一样的结果, 实际上这里docker本地只是一个客户端,连接到远程主机上的docker服务。

2.5 安装remote-container插件

在拓展插件里搜索remote container并安装。

安装完成后,在vscode设置中搜索remote docker path,设置为之前下载的docker的路径(默认就是docker命令,我这里命令行里找不到,所以需要手动配置)

3.开始项目

3.1 启动容器

docker run -d --name <container name> -v ~/newproj:/workspaces/newproj <image tag> tail -f /dev/null

注意: 这里要挂载项目目录到容器中方便保存文件。tail -f 这个命令是为了让容器保持运行。

3.2 vscode访问远程容器

  1. 打开VSCode,按下ctrl+shift+p运行docker contexts use, 选择上面创建的docker context.
  2. 按下ctrl+shift+p运行Remote-Containers:Attach to Running Container..., 选择上面创建的容器名字。
  3. 在新打开的vscode窗口中环境即上面的容器内部,现在可以尽情搬砖了。

注意: 可以连接的容器必须是正在持续运行着的的容器。(即使用类似tail -f /dev/null命令创建的容器)。

4.后记

本文主要是拾人牙慧,原文为:开发环境代码化: VSCode远程Docker容器作为开发环境 - 个人文章 - SegmentFault 思否。但自己在实践过程中遇到了一些问题,比如ssh免密登陆,同时本着“输出是最好的学习”的原则,故记录之。

5.参考

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题,总访问量为
载入天数...载入时分秒...
冀ICP备20001334号