工具 | 利用 VS Code 穿透远程服务器内 Docker 容器端口
笔者在远端服务器的 Docker 容器内部署 OpenClaw 时遇到了需要穿透网络的问题。
启用 OpenClaw Docker 的最优方案是直接
场景: 远程服务器上的 Docker 容器已启动,但未映射端口(或需增加端口),本地需通过浏览器访问。
即:本地浏览器 ←→ 远程宿主机 ←→ Docker 容器内部
背景:三层网络“断裂”
宿主机与本地:通过 SSH 连接,但默认只开放 22 端口。
容器与宿主机:容器 IP 是私有的,默认外部不可见。
服务与连接:许多服务(如 OpenClaw)默认绑定 127.0.0.1,拒绝非容器内的访问。
方案一:【启动前】预部署映射模式
适用场景:你准备新建容器,或者可以接受重启当前容器以换取长期的访问便利。
操作目的:在 Docker 引擎层直接撕开网络隔离,将容器端口绑定到宿主机 IP。
OpenClaw 除了主端口 18789,其 Agent 节点和辅助服务会占用邻近端口(如 18792 的心跳 OK)。需要在容器启动时映射一个端口段(一个端口范围)。
当然使用 OpenClaw 容器化部署的最佳方案是直接采用官方容器部署,而非启用一个通用容器再部署。除非像笔者一样有其他需求的。
方案二:【启动后】无映射穿透模式
适用场景:容器已在运行,里面有重要数据或进程不便重启,且启动时未配置 -p 参数。
操作目的:利用 VS Code 作为“中间人”,强行从容器内部把流量拉出来。也有其他穿透方案,VSCode 的 Remote-SSH 插件+ 官方 Docker 插件可以简易穿透
核心逻辑:三级跳板隧道
本地浏览器 ← (VS Code 隧道) → 远程宿主机 ← (VS Code Attach 穿透) → Docker 容器内部
- 权限与底座准备
问题:VS Code 扩展因权限不足无法连接 Docker。
目的:打通宿主机与 vscode 的管理通道。
解法:在远程服务器执行 sudo chmod 666 /var/run/docker.sock。
- 潜入容器 (Attach 模式)
问题:宿主机网络与容器网络完全隔离。
目的:让 VS Code 穿透容器壁,直接在容器内部操作。
解法:在 VS Code Docker 扩展中,右键容器选择 "Attach Visual Studio Code"。在新开的窗口里,你就是“容器本身”。
- 建立内部转发隧道
问题:服务在容器内跑,但本地浏览器感知不到。
目的:建立从本地电脑到容器内部的加密转发。
解法:在底部 “端口 (Ports)” 面板手动添加 18789。用 HTTP 而非 HTTPS 协议即可。这个步骤在容器内启动 openclaw 后 vscode 一般会自动完成。
上述解法由 Google Gemini 3 辅助生成

浙公网安备 33010602011771号