重装了 Win10,想保持电脑干干净净,开启了安全中心,软件尽量在 Win Store 下载,但是得折腾啊,少不了配置环境,装各种各样的工具,久了电脑就又乱了。。

在 V2 上看到有同学直接 pull 想要写的语言镜像下来,用 VSC 进到容器里写代码,于是搜了搜,好像是不久前才支持的,看了官网的介绍:

The Visual Studio Code Remote - Containers extension lets you use a Docker container as a full-featured development environment. It allows you to open any folder inside (or mounted into) a container and take advantage of Visual Studio Code’s full feature set

属实心动了!!

虽然文档很长,Quick start 就够了!

官方的示例

官方有几个语言的示例,从 pull image -> build image -> docker run 一把梭,非常舒服。

git clone https://github.com/Microsoft/vscode-remote-try-node
git clone https://github.com/Microsoft/vscode-remote-try-python
git clone https://github.com/Microsoft/vscode-remote-try-go
git clone https://github.com/Microsoft/vscode-remote-try-java
git clone https://github.com/Microsoft/vscode-remote-try-dotnetcore
git clone https://github.com/Microsoft/vscode-remote-try-php
git clone https://github.com/Microsoft/vscode-remote-try-rust
git clone https://github.com/Microsoft/vscode-remote-try-cpp

这里我选择的是 Go 的 repo,按照文档点击 VSC 左下角的远程标志,选择 Remote-Containers: Open Folder in Container..., 打开 clone 下来的文件夹即可

踩坑

在国内不管用什么国外公司的服务都得考虑代理。。。

第一次运行的时候想着 Docker 是设置了代理的,不慌,但还是卡住了,看了看 Docker 的代理设置,只用于 pull 镜像。。
打开 .devcontainer\Dockerfile 一看,build 的时候就会安装 Go 的各种工具,因此在 Dockerfile 中为 build 设置代理:

...

FROM golang:1

# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# 设置代理,注意如果使用宿主机的代理,IP 地址为宿主机的本地 IP
ENV PROXY="http://192.168.0.101:1081/"
ENV HTTP_PROXY=$PROXY \
    HTTPS_PROXY=$PROXY \
    FTP_PROXY=$PROXY \
    http_proxy=$PROXY \
    https_proxy=$PROXY \
    ftp_proxy=$PROXY

...

为了检查代理是否被成功运用,我还在 RUN 中增加了一行 curl ip.sb

...

RUN curl ip.sb \
    && apt-get update \
    && apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \

...

再次运行时,显示代理已成功设置:

0.png

但还是报错:invoke-rc.d: could not determine current runlevel,看日志是执行到安装和配置 sudo 的步骤,去 Dockerfile 找了找,正好这一步是可选项,就不多纠结了,注释掉:

1.png

再次运行时,就非常顺利了:

2.png

4.png

Comments