VSCode Docker扩展不提供图形化容器生命周期管理,仅调用本地docker CLI;默认只显示运行中容器,需切换“All Containers”才可操作已停止容器;日志、终端、端口映射等操作通过右键菜单或悬停提示获取。

VSCode 的 Docker 扩展本身不提供容器生命周期管理(如 start/stop/rm)的图形化操作入口,它只负责连接、浏览和基础交互;真正执行容器命令的仍是本地 docker CLI,扩展只是调用它。
为什么右键容器没看到“Start”或“Stop”选项
Docker 扩展的容器列表默认只显示正在运行的容器(docker ps 结果)。已停止的容器不会出现在默认视图中,因此无法右键操作。
- 要查看所有容器(包括已停止的),在 Docker 视图顶部点击
Containers下拉菜单,选择All Containers - 此时右键某个已停止的容器,才会出现
Start;右键正在运行的容器,才会有Stop、Restart、Remove - 如果仍不显示,检查 VSCode 是否以足够权限启动(尤其 Windows 上用 PowerShell / CMD 启动时可能权限受限)
如何从 VSCode 直接执行 docker run 或自定义命令
扩展不提供自由输入 docker run 命令的界面,但可通过集成终端快速触发:
- 打开 VSCode 集成终端(
Ctrl+`),确保当前 shell 已配置好docker环境(which docker有输出) - 直接运行任意命令,例如:
docker run -d -p 8080:80 --name my-nginx nginx
- 运行后刷新 Docker 视图(右键容器节点 →
Refresh,或按F5),新容器就会出现在列表中 - 注意:扩展不会校验镜像是否存在,
docker run失败时错误仍会原样抛到终端里
容器日志/进入终端/端口映射怎么看
这些是高频操作,但位置容易忽略:
- 日志:右键容器 →
View Logs(等价于docker logs -f),日志流实时输出,关闭标签页即停止跟踪 - 进入容器:右键 →
Attach Visual Studio Code(仅适用于含 VS Code Server 的镜像,如官方mcr.microsoft.com/vscode/devcontainers系列);普通容器请选Open in Integrated Terminal(等价于docker exec -it,若无/bin/sh /bin/sh则 fallback 到/bin/bash) - 端口映射:鼠标悬停在容器名上,会浮出小提示,显示
Ports: 0.0.0.0:8080->80/tcp这类信息;也可右键 →Inspect查看完整 JSON,其中NetworkSettings.Ports字段为准
常见失效场景与绕过方式
扩展依赖 Docker Desktop(macOS/Windows)或 dockerd(Linux)正常运行,且 VSCode 能访问其 socket:
- Linux 用户未将当前用户加入
docker组 → 运行sudo usermod -aG docker $USER,然后**完全退出并重登系统**(仅重启 VSCode 不生效) - WSL2 中 Docker Desktop 未启用 “Use the WSL2 based engine” → 设置 → General → 勾选该项,并重启 WSL2(
wsl --shutdown) - 扩展显示 “Docker is not reachable” 但终端中
docker info正常 → 检查 VSCode 是否启用了 Remote-SSH 或 Dev Container,此时扩展默认连接本地 socket,需手动指定远程 Docker host(在设置中搜索docker.host,填入tcp://):2375
真正麻烦的从来不是点几下鼠标,而是状态不同步——比如你以为容器在运行,其实它刚因 OOM 被 kill 了;或者你以为端口映射成功,结果宿主机防火墙拦住了。Docker 扩展只是个窗口,背后还是得信 docker ps -a 和 docker port 的输出。










