VSCode连接远程Docker容器进行开发

14次阅读

可通过四种方式实现本地vscode远程调试docker容器:一、Remote-Containers直连远程Docker守护进程;二、ssh隧道代理访问docker.sock;三、容器内部署code-server浏览器接入;四、devcontainer.json声明式定义开发环境。

VSCode连接远程Docker容器进行开发

如果您希望在本地 VSCode 中直接编辑和调试运行在远程 Docker 容器中的代码,则需建立安全、稳定的远程开发通道。以下是实现该目标的多种可行路径:

本文运行环境:macBook Pro,macOS Sequoia。

一、使用 Remote-Containers 扩展直连远程 Docker 守护进程

此方法通过配置 VSCode 的 Remote-Containers 扩展,使其连接到远程主机上运行的 Docker daemon,从而在本地界面中打开并操作远程容器内的工作区。前提是远程主机已启用 Docker 的 TCP 接口且配置了 TLS 认证或信任网络环境。

1、在远程主机上修改 Docker 服务配置,将 /etc/docker/daemon.json 中添加 {“hosts”: [“unix:///var/run/docker.sock”, “tcp://0.0.0.0:2376”]},并重启 Docker 服务。

2、在本地 macos 上安装 VSCode 并启用 Remote-Containers 扩展。

3、设置环境变量 DOCKER_HOST=tcp://:2376,若启用 TLS 则同步配置 DOCKER_TLS_VERIFY=1DOCKER_CERT_PATH 指向证书目录。

4、执行 VSCode 命令面板(Cmd+Shift+P),输入 Remote-Containers: Attach to Running Container…,选择远程主机上目标容器即可加载工作区。

二、通过 SSH 隧道代理访问远程 Docker Socket

避免直接暴露 Docker daemon 的 TCP 端口,改用 SSH 端口转发方式将远程 /var/run/docker.sock 映射至本地 Unix socket 或 TCP 端口,提升安全性。

1、在本地终端执行 ssh -L /var/run/docker.sock:/var/run/docker.sock -N -f @,建立后台隧道(需远程用户具有读取 docker.sock 权限)。

2、确认本地 /var/run/docker.sock 已被成功映射,可运行 docker ps 验证是否列出远程容器。

3、启动 VSCode 后,使用 Remote-Containers 扩展执行 Reopen in ContainerAttach to Running Container,此时扩展将自动识别本地代理的远程 Docker 环境。

三、在远程容器内部署 Code Server 并通过浏览器接入

该方案不依赖本地 VSCode 客户端,而是在远程 Docker 容器中运行开源的 code-server 实例,提供完整 Web 版 VSCode 界面,所有编辑与调试均在容器内完成。

1、拉取支持 code-server 的基础镜像,例如 codercom/code-server 或基于官方 mcr.microsoft.com/vscode/devcontainers/base:alpine 构建自定义镜像。

2、运行容器时挂载源码目录并映射端口,命令示例:docker run -d -p 8080:8080 -v $(pwd):/home/coder/project codercom/code-server –auth=none

3、在本地浏览器访问 http://:8080,即可进入容器内运行的 VSCode 界面,安装插件、打开文件夹、启动终端均直接作用于容器环境。

四、使用 devcontainer.json 声明式定义远程开发环境

通过项目根目录下的 .devcontainer/devcontainer.json 文件,显式指定远程容器的镜像、端口转发、扩展列表与初始化脚本,使 Remote-Containers 扩展能全自动构建并接入一致环境。

1、在项目中创建 .devcontainer/devcontainer.json,内容包含 image 字段指向私有仓库镜像,如 my-registry.example.com/my-python-dev:latest

2、在 features 数组中声明所需工具,例如 “ghcr.io/devcontainers/features/python:1”“ghcr.io/devcontainers/features/docker-in-docker:2”

3、配置 forwardPorts 列出需暴露的服务端口,并设置 postCreateCommand 自动安装依赖或初始化 git 子模块。

4、在本地 VSCode 中打开该文件夹后,点击右下角弹出的 Reopen in Container 提示,扩展将拉取镜像、启动容器、应用配置并加载工作区。

text=ZqhQzanResources