0.前言
我服了,vscode确实太香了。
1.远程主机配置
注意:以下基于CentOS7环境。
1.1 安装docker
一键安装脚本:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
1.2 配置docker
在远程主机上:
- 创建文件
daemon.json
到目录/etc/docker
:
{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
- 创建文件
/etc/systemd/system/docker.service.d/override.conf
:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
- 重启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访问远程容器
- 打开VSCode,按下
ctrl+shift+p
运行docker contexts use
, 选择上面创建的docker context. - 按下
ctrl+shift+p
运行Remote-Containers:Attach to Running Container...
, 选择上面创建的容器名字。 - 在新打开的vscode窗口中环境即上面的容器内部,现在可以尽情搬砖了。
注意: 可以连接的容器必须是正在持续运行着的的容器。(即使用类似
tail -f /dev/null
命令创建的容器)。
4.后记
本文主要是拾人牙慧,原文为:开发环境代码化: VSCode远程Docker容器作为开发环境 - 个人文章 - SegmentFault 思否。但自己在实践过程中遇到了一些问题,比如ssh免密登陆,同时本着“输出是最好的学习”的原则,故记录之。