连接在运行中的容器上
Visual Studio Code 可以帮你创建和启动容器,但这可能不符合你的工作流程,你可能更愿意把 VS Code “附加”到已经运行的 Docker 容器上——无论它是如何启动的。一旦附加,你可以安装扩展、编辑和调试,就像用devcontainer.json打开容器中的文件夹一样。
附加到Docker容器
要连接到 Docker 容器,可以选择 Dev Containers: Attach to Running Container...,从命令面板(F1)中选择,或者在活动栏的远程资源管理器中,在容器视图中选择你想连接的容器的“附加到容器”内联作。

注:使用 Alpine Linux 容器时,某些扩展可能无法使用,原因包括
格利比克扩展内部原生代码中的依赖关系。
附加的容器配置文件
VS Code 支持镜像或容器级配置文件,以加快你反复连接到某个 Docker 容器时的设置。一旦连接,每当你打开文件夹、安装扩展或转发端口时,本地针对镜像的配置文件会自动更新,记住你的设置,这样当你再次连接时,一切都会回到正确的位置。
-
默认情况下,采用图像级配置。要查看或更新,请从命令面板(F1)中选择开发容器:打开容器配置文件。
-
如果你想将配置绑定到容器名称,在附加后选择“开发容器:打开命名配置文件”(Command Palette,F1)。从此以后的任何更新都将应用于该名称级配置,而非镜像级。
这两个文件都支持以下子集devcontainer.json性质:
{
// Default path to open when attaching to a new container.
"workspaceFolder": "/path/to/code/in/container/here",
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": ["dbaeumer.vscode-eslint"],
// An array port numbers to forward
"forwardPorts": [8000],
// Container user VS Code should use when connecting
"remoteUser": "vscode",
// Set environment variables for VS Code and sub-processes
"remoteEnv": { "MY_VARIABLE": "some-value" }
}
请参阅附带的容器配置参考,了解完整的属性及其用途列表。
保存后,每当你第一次打开带有相同图片/容器名称的容器时,这些属性都会用来配置环境。
提示:如果你的配置有问题,也可以在未连接到容器时编辑,方法是从命令面板(F1)中选择“开发容器:打开附加容器配置文件......”,然后选择显示列表中的图片/容器名称。
最后,如果你有想安装的扩展,不管你连接哪个容器,都可以更新settings.json指定一份必须始终安装的扩展列表。
附加容器配置参考
附加的容器配置文件类似于devcontainer.json,支持其部分属性。
| 财产 | 类型 | 描述 |
|---|---|---|
workspaceFolder |
弦 | 设置VS Code连接容器时应打开的默认路径(通常是连接到卷挂载的路径,源代码可在容器中找到)。不是默认设置的(打开了一个空窗口)。 |
扩展 |
数组 | 一组扩展ID数组,用于指定在容器创建时应安装哪些扩展。默认为 。[] |
背景设定 |
对象 | 添加默认设置settings.json将值放入容器/机器特定的设置文件中。 |
前向端口 |
数组 | 一份应从容器内部转发到本地机器的端口列表。 |
ports属性 |
对象 | 映射端口号的对象,“主机:港口”值、范围或正则表达式,映射为一组默认选项。请参阅端口属性以获取可用选项。例如:“portsAttributes”: {“3000”: {“label”: “Application port”}} |
其他Ports属性 |
对象 | 端口、端口范围和主机的默认选项,这些都未使用该软件配置ports属性.请参阅端口属性以获取可用选项。例如:“otherPortsAttributes”: {“onAutoForward”: “silent”} |
remoteEnv |
对象 | 一组命名值对,用于设置或覆盖 VS Code(或终端等子进程)的环境变量,但不覆盖整个容器。环境和预定义变量可在值中引用。 例如: “remoteEnv”: { “PATH”: “${containerEnv:PATH}:/some/other/path” } |
remoteUser |
弦 | 覆盖用户对VS Code在容器中运行的决定(以及终端、任务或调试等子进程)。默认用户,整个容器运行时(通常)根). |
userEnvProbe |
枚举 | 表示用于“探测”用户环境变量以包含在VS代码或其他相关工具进程中的shell类型:没有,互动壳牌,登录壳,或者登录互动壳(默认)。具体使用的shell是基于用户默认的shell(通常是bash)。例如,bash交互壳通常会包含在/etc/bash.bashrc以及~/.bashrc而登录壳通常包含以下变量/etc/个人资料以及~/.个人资料.将该属性设置为登录互动壳会从四个文件中获取变量。 |
随员司令部后 |
字符串, 数组 |
VS Code 之后运行的命令字符串或命令参数列表会附加到容器上。在字符串中执行多个命令。例如,&&“纱线安装”或“apt-get update & apt-get install -y curl”.数组语法[“纱线”、“安装”]将调用该命令(此处为纱线)直接使用,无需使用外壳。不是默认设置的。注意,数组语法会在没有 shell 的情况下执行命令。你可以了解更多关于字符串属性和数组属性的格式化。 |
附加容器配置文件中的变量
变量可以在附加配置文件中以以下格式引用某些字符串值:${variableName}。下表列出了您可以使用的变量。
| 变量 | 性质 | 描述 |
|---|---|---|
${containerEnv:VAR_NAME} |
remoteEnv |
容器内现有环境变量的值(此例中,VAR_NAME一旦它上线并运行。例如:“remoteEnv”: { “PATH”: “${containerEnv:PATH}:/some/other/path” } |
连接到Kubernetes集群中的容器
要附加到Kubernetes集群中的容器,请从命令面板(⇧⌘P,Windows,Linux Ctrl+Shift+P)中选择开发容器:附加到运行中的Kubernetes 容器......)。或者,先安装Kubernetes扩展,库贝克尔同时也包含了开发容器扩展。然后从活动栏选择Kubernetes浏览器,展开你想连接容器所在的集群和Pod。最后,右键点击容器,从上下文菜单中选择“附加 Visual Studio Code”。
注:附带的容器配置文件尚未支持Kubernetes集群中的容器。

下一步
- 创建开发容器——为你的工作环境创建一个自定义容器。
- 高级容器——寻找针对高级容器场景的解决方案。
- devcontainer.json参考文献 - 回顾
devcontainer.jsonSchema。