在 VSCode WSL 中安装 Docker 插件(Docker 插件连接 WSL)

本文介绍了在VSCode中使用Docker插件的完整解决方案,重点解决了WSL环境下的常见配置问题。


核心要点包括:

  • 必须安装的两个核心插件:
    • Docker(微软官方):基础功能,管理容器/镜像
    • DevContainers:容器内开发支持
  • WSL网络问题解决:
    • 修正DNS配置(8.8.8.8/114.114.114.114)
    • 修改wsl.conf防止自动覆盖
    • 重启WSL服务
  • 用户权限配置:
    • 将当前用户加入docker组
    • 确保Docker Desktop开启WSL集成
  • 常见问题排查:
    • 插件必须安装在WSL环境中
    • 检查Docker Desktop是否运行
    • 通过docker ps验证环境
  • 其他实用工具:
    • WSL/YAML等辅助插件

该方案解决了从基础安装到网络配置、权限问题等完整链路,特别针对WSL环境下的常见报错提供了具体解决方法。

vscode 里面的 Docker插件,需要装哪些插件


在 VS Code 里用 Docker,其实核心只需要装 两个插件,它们分工很明确,也是目前最稳定、最主流的组合。


我把它们和几个可选的实用工具都整理在下面的表格里了,你可以看得很清楚:

插件名称 核心用途 为什么推荐安装 备注
Docker (ms-azuretools.vscode-docker) 管理你电脑上的所有 Docker 资源 必装 。这是微软官方出品,是一切操作的基础。装好后,你可以在 VS Code 的侧边栏里直观地看到、管理所有的容器、镜像、卷和网络,不用再在终端里敲命令了。 不装它,VS Code 里就找不到任何 Docker 相关的功能。
Dev Containers (ms-vscode-remote.remote-containers) 在 Docker 容器内部进行开发 推荐安装。这是"远程开发"套件的核心之一。它允许你直接以容器作为完整的开发环境,在里面编码、调试,实现开发环境的完全隔离和团队统一。 安装它之后,你会发现"重新在容器中打开"的选项。
Remote - SSH / Remote - WSL 连接到远程服务器或 WSL 进行开发 按需安装。如果你的代码在远程机器或 WSL 里,这两个插件就是刚需。 由于你们教学用的是 WSL,这个插件对你很有帮助。
Docker Compose (通过 Docker 插件集成) 管理多容器应用 随 Docker 插件提供 。当你打开 docker-compose.yml 文件时,Docker 插件会自动提供语法高亮和一键启停服务栈的功能。 不需要单独安装,Docker 插件已经包含了。
YAML 提供 docker-compose.yml 等文件的智能编辑 强烈建议。虽然不是 Docker 专用,但它能让你在编辑 YAML 文件时有语法高亮、自动补全和校验,能避免很多格式错误。 直接在 VS Code 扩展市场搜索 YAML 安装。

⚠️ 我特别想提醒你的一点(容易踩坑的细节)

网上有些文章可能会推荐很多 Docker 相关的插件,但根据不少开发者的实际反馈,真正可用、稳定的其实就只有上面表格里的前两个核心插件。太多功能重叠或维护不善的插件可能会有权限问题,甚至反而导致编译或连接失败。

所以,我们选择 Docker + Dev Containers + (按需) Remote - SSH/WSL 这个黄金组合,是最稳妥、最不折腾的方案。

🚀 安装之后的快速验证

插件装好后,可以按下面的步骤快速验证一下 Docker 环境是否就绪:

  1. 打开左侧活动栏的 Docker 图标,你应该能看到本地的 Docker 环境,比如正在运行的容器和镜像列表。

  2. 试试用插件启动一个容器 :找到那个之前让你折腾很久的 hello-world 镜像,右键点击它,选择 "Run""Run Interactive",看它能不能在 VS Code 里成功跑起来。


是安装在VSCode本地,还是要装在VSCode WSL中


这是个很关键的细节。答案是:默认情况(从 Windows 开始菜单启动)下,Docker 插件是安装在 Windows 本地 ,但这通常无法正常工作 ;正确做法是在连接到 WSL 后,将插件安装在 WSL 中

✅ 正确答案:必须安装在 WSL 中

要让 Docker 插件正常使用,必须在 WSL 连接状态下安装。

关键原因 :Docker 插件的核心功能依赖于 docker 命令,而这个命令存在于你的 WSL Ubuntu 环境中,而不是 Windows 环境。如果你在 Windows 本地安装插件,它找不到这个命令,就会报错或无法显示容器。


📝 操作步骤(非常关键,一个细节都不能错)

请严格按照这个顺序操作,这是你之前"docker 命令找不到"问题的解决方案:

  1. 第一步:确保 WSL 已就绪

    • 启动你的 MobaXterm 并连接到 WSL。

    • (可选但建议) :在 MobaXterm 终端里输入 code .,这会从 WSL 环境启动 VS Code,并确保它继承所有正确的环境变量(如 docker 命令路径)。

  2. 第二步:在 VS Code 中连接到 WSL

    • 如果 VS Code 启动了,点击左下角的 绿色图标 ><,在弹出菜单中选择 "Connect to WSL",然后选择你的 Ubuntu 发行版。

    • 此时 VS Code 窗口的标题栏或左下角会显示 "WSL: Ubuntu",这表示你已经进入了"远程连接"状态。

  3. 第三步:安装插件(关键!)

    • 已经连接到 WSL 的 VS Code 窗口里,点击左侧的"扩展"图标(或按 Ctrl+Shift+X)。

    • 在搜索框中搜索 Docker

    • 找到微软官方出品的 Docker 插件(作者是 Microsoft)。

    • 此时,关键点来了! 插件详情页上的安装按钮会显示为 "在 WSL: Ubuntu 中安装" (Install in WSL: Ubuntu)。一定要点击这个按钮!

    • 点击后,插件才会被安装到 WSL 环境中,而不是你的 Windows 本地。

  4. 第四步:验证

    • 安装完成后,左侧活动栏会出现 Docker 图标。

    • 点击它,你应该能看到你之前在 WSL 中运行的容器(比如 hbase)和拉取的镜像列表了。


🔍 如何确认插件已经装对了?

你可以在扩展面板 中确认。如果插件在 WSL 中运行,它的旁边会有一个 "WSL" 的小标识,或者鼠标悬停时信息会告诉你它的安装位置在 WSL 中。这代表插件已经运行在正确的"远程主机"上了。

⚠️ 一个重要提醒:关于终端

如果你已经习惯从 Windows 开始菜单启动 VS Code,然后手动连接 WSL,这样没问题。

但根据你的使用习惯(经常在 MobaXterm 中使用 code . 命令),非常建议你延续这个习惯 。因为 code . 命令在 WSL 的终端里执行,它会直接告诉 VS Code 当前的工作环境,并让它从父进程(你的终端)继承正确的 PATH 环境变量,这样 VS Code 和它的插件就能准确找到 WSL 里安装的 Docker 了。

💎 总结

你之前遇到的 Docker 插件不工作、找不到容器的问题,根源就在于你的插件当时安装在了 Windows 本地,所以它"看不到"WSL 里的 Docker 服务。

一句话总结:必须先通过左下角的绿色图标连接到 WSL,然后在扩展面板中找到并点击"在 WSL: Ubuntu 中安装"按钮,这才是正确的方式。


WSL 网络配置的问题


bash 复制代码
mumu@MuJinqiu:~$ code .
Updating VS Code Server to version 8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e
Removing previous installation...
Installing VS Code Server for Linux x64 (8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e)
Downloading: 100%
Failed
--2026-06-03 16:21:15--  https://update.code.visualstudio.com/commit:8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e/server-linux-x64/stable
Resolving update.code.visualstudio.com (update.code.visualstudio.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address 'update.code.visualstudio.com'
ERROR: Failed to download https://update.code.visualstudio.com/commit:8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e/server-linux-x64/stable to /home/mumu/.vscode-server/bin/8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e-1780474875.tar.gz
mumu@MuJinqiu:~$

这个错误是因为 VS Code 在 WSL 中尝试下载服务端组件时,无法解析 update.code.visualstudio.com 的域名。这是 WSL 网络配置的问题。


解决方案:检查 WSL 网络配置

bash

bash 复制代码
# 查看 /etc/resolv.conf 中的 DNS 配置
cat /etc/resolv.conf

正常情况下应该显示:

text

复制代码
nameserver 172.xx.xx.xx

备选方案:在 VS Code 中手动连接 WSL

如果 code . 命令一直失败,可以直接在 VS Code 中操作:

  1. 打开 VS Code(从 Windows 开始菜单启动)

  2. 点击左下角的绿色图标 ><

  3. 选择 "Connect to WSL"

  4. 选择你的 Ubuntu 发行版

  5. VS Code 会自动安装服务端组件(会自动处理网络问题)


根本原因

code . 命令会触发 VS Code 在 WSL 中下载服务端。如果 WSL 的网络配置有问题(DNS 无法解析外网地址),就会失败。而通过 VS Code 主程序连接 WSL 时,下载过程可能由主程序代理,更容易成功。


先执行 cat /etc/resolv.confping -c 3 update.code.visualstudio.com,把结果发给我。


bash 复制代码
mumu@MuJinqiu:~$ # 查看 /etc/resolv.conf 中的 DNS 配置
cat /etc/resolv.conf
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0 trust-ad
search .
mumu@MuJinqiu:~$

问题找到了。/etc/resolv.conf 中的 nameserver 指向了 127.0.0.53(本地回环地址),这是 WSL 默认的配置。但在你的网络环境下,这个配置可能无法正常工作。


解决方案

第一步:手动配置 DNS

bash

复制代码
# 编辑 resolv.conf(需要先解除符号链接)
sudo rm /etc/resolv.conf
sudo nano /etc/resolv.conf

在打开的文件中输入以下内容:

text

复制代码
nameserver 8.8.8.8
nameserver 114.114.114.114

保存退出(Ctrl+XY → 回车)

第二步:防止 WSL 自动覆盖配置

bash

复制代码
# 创建或编辑 wsl.conf
sudo nano /etc/wsl.conf

添加以下内容:

text

复制代码
[network]
generateResolvConf = false

保存退出。

第三步:重启 WSL 使配置生效

在 Windows PowerShell 中执行:

powershell

复制代码
wsl --shutdown

wsl 命令是在 Windows PowerShellCMD 中执行的,不是在 WSL 内部的 Linux 终端里执行。


执行后,WSL 会完全关闭(没有任何提示输出是正常的)。

然后重新打开 MobaXterm 连接 WSL。

第四步:验证网络

bash

复制代码
# 测试域名解析
ping -c 3 baidu.com

# 测试 VS Code 服务器域名
ping -c 3 update.code.visualstudio.com

第五步:重新执行 code .

bash

复制代码
code .

DNS 配置生效,网络恢复正常

bash 复制代码
mumu@MuJinqiu:~$ ping -c 3 baidu.com
PING baidu.com (110.242.74.102) 56(84) bytes of data.
64 bytes from 110.242.74.102: icmp_seq=1 ttl=49 time=38.3 ms
64 bytes from 110.242.74.102: icmp_seq=2 ttl=49 time=53.1 ms
64 bytes from 110.242.74.102: icmp_seq=3 ttl=49 time=79.0 ms

--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 38.301/56.789/79.017/16.831 ms
mumu@MuJinqiu:~$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
mumu@MuJinqiu:~$

网络已经恢复正常!DNS 配置生效了,baidu.com 也能 ping 通。


现在重新执行 code .

bash

复制代码
code .

这次应该能正常下载 VS Code Server 了。等待下载完成(会显示进度百分比)。

先执行 code .,等待下载完成。成功后 VS Code 会正常打开,并且左下角会显示 "WSL: Ubuntu"

VS Code Server 安装成功

bash 复制代码
mumu@MuJinqiu:~$ ping -c 3 baidu.com
PING baidu.com (110.242.74.102) 56(84) bytes of data.
64 bytes from 110.242.74.102: icmp_seq=1 ttl=49 time=38.3 ms
64 bytes from 110.242.74.102: icmp_seq=2 ttl=49 time=53.1 ms
64 bytes from 110.242.74.102: icmp_seq=3 ttl=49 time=79.0 ms

--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 38.301/56.789/79.017/16.831 ms
mumu@MuJinqiu:~$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
mumu@MuJinqiu:~$ code .
Updating VS Code Server to version 8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e
Removing previous installation...
Installing VS Code Server for Linux x64 (8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e)
Downloading: 100%
Unpacking: 100%
Unpacked 3542 files and folders to /home/mumu/.vscode-server/bin/8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e.
Looking for compatibility check script at /home/mumu/.vscode-server/bin/8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e/bin/helpers/check-requirements.sh
Running compatibility check script
Compatibility check successful (0)
mumu@MuJinqiu:~$

🎉 VS Code Server 安装成功!

现在 VS Code 已经可以在 WSL 环境中正常使用了。接下来安装 Docker 插件。


在 VS Code 中安装 Docker 插件

第一步:确认已连接到 WSL

  1. 此时 VS Code 应该已经自动打开

  2. 查看左下角,应该显示 "WSL: Ubuntu" (如果没有,点击绿色图标 ><,选择 "Connect to WSL")

第二步:安装 Docker 插件

  1. 点击左侧活动栏的 扩展图标 (或按 Ctrl+Shift+X

  2. 在搜索框中输入:Docker

  3. 找到微软官方出品的 Docker 插件(作者:Microsoft,已安装数千万次)

  4. 关键步骤 :查看插件详情页,按钮应该显示 "在 WSL: Ubuntu 中安装"(Install in WSL: Ubuntu)

  5. 点击这个按钮,等待安装完成

第三步:验证插件工作

  1. 安装完成后,左侧活动栏会出现 Docker 图标(🐳)

  2. 点击 Docker 图标

  3. 你应该能看到你之前运行的容器(如 hbase)和已下载的镜像列表


如果看不到容器

可能需要给 Docker 插件一点时间来刷新。尝试:

  1. 点击 Docker 面板右上角的 刷新按钮(⟳)

  2. 或者按 Ctrl+Shift+P,输入 Docker: Focus on Containers View


安装其他推荐插件(可选)

插件 搜索关键词 作用
Dev Containers ms-vscode-remote.remote-containers 在容器内开发
Remote - WSL ms-vscode-remote.remote-wsl WSL 远程开发支持
YAML yaml 编辑 compose 文件时语法高亮

安装方式同上:确保在 WSL 连接状态下,点击 "在 WSL: Ubuntu 中安装"


总结

状态 说明
✅ WSL 网络 已修复,DNS 正常
✅ VS Code Server 已成功安装
⏳ Docker 插件 待安装

Docker 插件安装好了,但是左侧活动栏没有出现 Docker 图标

从你的截图来看,你安装的插件是 Docker Extension Pack(扩展包),它并不是直接提供侧边栏图标的那个核心插件。这种情况在初次安装时很容易混淆。

真正管理容器、提供侧边栏图标的插件是 "Docker" (ms-azuretools.vscode-docker) ,但截图显示它已经安装好了。核心问题在于:插件的主面板没有自动打开,这在安装了扩展包之后也是常见现象。


✅ 解决办法(按顺序操作)

1. 手动打开 Docker 面板

  • 点击 VS Code 左侧活动栏最下方的 Docker 图标 (🐳),如果这里都没有,就按 Ctrl+Shift+P 打开命令面板,输入 Docker: Focus on Containers View,然后按回车。

2. 检查并禁用可能冲突的插件

  • Container Tools (开发者: Microsoft) 似乎已经启用,它可能就是导致 Docker 图标"消失"的罪魁祸首。建议你直接卸载它(在插件页找到它并点击"卸载")。

  • 卸载后,重新加载 VS Code(Ctrl+Shift+P -> Developer: Reload Window)。

Container Tools提示无法卸载


3. 确认必要组件是否完整

  • mumu[WSL:Ubuntu] 的远程连接状态下,检查 Dev Containers (ms-vscode-remote.remote-containers) 和 Remote - WSL (ms-vscode-remote.remote-wsl) 这两个插件是否也已安装好。有时 Docker 面板需要它们才能正常工作。

4. 完成收尾步骤

  • 如果以上步骤手动调出了面板,但容器或镜像列表是空的,直接点击面板上的刷新按钮(⟳)。

  • 如果还是不行,可以尝试在终端中重启一下 Docker Desktop:

    bash

    复制代码
    sudo service docker restart

按这个顺序操作,Docker 图标应该就会出现了。如果你在执行第一步时发现命令面板里也找不到 Docker 相关命令,那问题可能就集中在第二步的插件冲突上,先卸载那个试试看。


直接手动调出 Docker 面板


解决方法

方法一:直接点击 Docker 图标(最简答)

查看 VS Code 左侧活动栏的最下方 ,应该有一个 Docker 图标(🐳)。如果没有看到,可能是被折叠了:

  • 在活动栏空白处右键 → 勾选 Docker

  • 或者鼠标悬停在活动栏底部,看看是否有"更多操作"的展开按钮

方法二:使用命令面板打开

  1. Ctrl+Shift+P 打开命令面板

  2. 输入 Docker Focus

  3. 选择 "Docker: Focus on Containers View"

  4. 按回车

执行后,Docker 面板就会在左侧打开,同时侧边栏也会出现 Docker 图标。

方法一,左侧活动栏没有出现 Docker 图标

成功了!


虽然左侧活动栏没有出现 Docker 图标,但是 Docker 面板已经成功显示出来了!

从截图可以看到:

  • CONTAINERS 区域显示了 hbase 容器(状态 Up,运行了 14 分钟)✅

  • IMAGES 区域显示了 harisekhon/hbase 等镜像 ✅

这说明 Docker 插件已经完全正常工作,只是图标没有显示在活动栏而已。


让 Docker 图标显示在活动栏(可选)

虽然不影响使用,但如果你希望图标显示出来,可以这样做:

  1. 在左侧活动栏任意空白处右键

  2. 在弹出菜单中找到 "Docker",点击勾选

  3. Docker 图标(🐳)就会出现在活动栏

如果右键菜单里没有 Docker 选项:

  1. 右键活动栏空白处

  2. 选择 "View: Show View by Name"(或 "显示视图...")

  3. 输入 docker,选择 "Containers"


当前状态确认
功能 状态
Docker 面板 ✅ 已显示
容器列表 ✅ 显示 hbase (Up)
镜像列表 ✅ 显示多个镜像
左侧活动栏图标 ⚠️ 可选,不影响使用

验证 Docker 面板交互

试试在 Docker 面板中对容器进行操作:

  1. 右键点击 hbase 容器

  2. 应该能看到 "Start""Stop""Restart""View Logs" 等选项

  3. 可以试试 "View Logs",看是否能在 VS Code 中打开日志


总结 :Docker 插件已经成功连接 WSL,可以正常管理容器和镜像了。虽然图标没显示(可能是 VS Code 的小 bug),但核心功能完全正常。现在你可以愉快地在 VS Code 中管理 Docker 了!

方法三:重启 VS Code

有时候插件安装后需要完全重启才能激活图标:

  1. Ctrl+Shift+P

  2. 输入 Reload Window

  3. 选择 "Developer: Reload Window"


如果命令面板里也找不到 Docker 相关命令

说明 Docker 插件没有完全激活。尝试以下步骤:

  1. 在扩展面板中找到 Docker 插件

  2. 点击 "禁用" → 等待 5 秒 → 点击 "启用"

  3. 重新加载窗口(Ctrl+Shift+PReload Window


先试试方法二 (命令面板输入 Docker Focus),告诉我结果。


左下角是不是要点击下载 install Docker DX

是的,你应该点击这个链接。

不过请注意:你看到的其实是 Docker 插件提供的一个增强编辑体验的工具,并不是 Docker 引擎本身。 你的 Docker 引擎 (docker-desktop) 已经在 Windows 中安装且运行正常,所以不需要重复安装。

关键是,你的 VS Code 当前无法连接到 Docker 引擎,因此才出现了 Failed to connect. Is Docker installed? 的提示。


核心原因

出现这个提示的唯一原因,是 VS Code 中运行的 Docker 插件(在 WSL 端)无法找到 Docker 引擎的通信接口。

你已经确认过 docker ps 命令在 WSL 终端中是正常工作的,那问题就只出在 VS Code 插件这边了。

解决方案:强制插件重新连接

第一步:彻底重启 VS Code 和 WSL 集成

  1. 在 VS Code 中,按 Ctrl+Shift+P,输入 Developer: Reload Window 并回车,这会尝试在 WSL 环境下重启 VS Code 并重新加载所有插件。

  2. 如果重启后依然无效,请在 Windows PowerShell 中执行 wsl --shutdown 命令,等 WSL 完全关闭后,重新打开 MobaXterm 连接 WSL,然后在终端中再次输入 code .

第二步:检查 Docker Context (最可能的原因)

在 WSL 终端中执行以下命令,查看输出结果:

bash

复制代码
docker context ls

如果显示有多个 context,并且当前活动的不是 default,可以将其切换回来:

bash

复制代码
docker context use default

切换后,VS Code 应该就能立刻识别到了。

第三步:手动指定 Docker 环境 (最稳定的方法)

Ctrl+Shift+P,输入 Docker Environment,选择 "Docker: Choose Docker Environment" 。在弹出的选项中,选择 "WSL"


关于 "Install Docker DX"

你可以放心点击它,这是微软为了让你在写 Dockerfilecompose.yaml 文件时有更智能的代码补全和语法提示,是一个好的生产力工具,但它无法解决你当前连接失败的核心问题

按上面的步骤执行,应该能很快让 VS Code 正常显示你的容器和镜像。先试试第一步的 Developer: Reload Window,这通常能解决大部分这类问题。


在当前的 WSL 环境中,docker 命令没有被找到

bash 复制代码
mumu@MuJinqiu:~$ code .
mumu@MuJinqiu:~$ docker context ls

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

For details about using Docker Desktop with WSL 2, visit:

https://docs.docker.com/go/wsl2/

mumu@MuJinqiu:~$

这个错误信息非常明确,它告诉我们:在当前的 WSL 环境中,docker 命令没有被找到。

虽然我们之前在 jinqiu 用户下是成功的,但现在 mumu 用户的环境里还没有配置好 Docker。这解释了为什么 VS Code 插件会显示 Failed to connect------因为它运行在 mumu 用户下。

解决方案:为当前用户配置 Docker 环境

你只需要把之前对 jinqiu 用户做的 Docker 配置,在 mumu 用户下也做一遍即可。

第一步:将 mumu 用户加入 docker

这是最关键的一步。执行以下命令,并输入 mumu 用户的密码(就是你登录 WSL 时用的那个):

bash

复制代码
sudo usermod -aG docker $USER

第二步:激活新的用户组

组权限更改后,需要重新登录才能生效。一个简单的方法是关闭当前的 MobaXterm 会话并重新打开,这会让 WSL 刷新用户组。

重新连接后,在 WSL 终端中执行以下命令来验证是否成功:

bash

复制代码
docker ps

如果这个命令不再报错,而是正常显示,那就说明配置好了。

第三步:在 VS Code 中重新连接

回到 VS Code,按 Ctrl+Shift+P,输入 Developer: Reload Window 并回车,让 VS Code 刷新它所在的 WSL 环境。

重载后,看 Docker 面板(左侧活动栏的🐳图标),现在应该能正常显示你的容器和镜像了。


💡 为什么之前 jinqiu 能用,而 mumu 不能用?

你当时为了解决 Docker 镜像拉取失败的问题,创建了新用户 jinqiu,并且所有后续的配置(包括加入 docker 组)都是在 jinqiu 用户下完成的。而你现在使用的用户是 mumu,它的环境并没有被配置过。

你可以在 mumu 用户的 WSL 终端里,用 groups 命令验证一下,输出结果应该不会有 docker 字样。

bash

复制代码
groups

先执行第一步的 sudo usermod -aG docker $USER 命令,然后重新打开 MobaXterm 会话 ,在 mumu 用户下运行 docker ps 测试。完成后告诉我结果。


mumu 用户下,docker 命令不可用。这意味着 Docker Desktop 的 WSL 集成功能没有对该用户生效。

bash 复制代码
mumu@MuJinqiu:~$ docker ps

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

For details about using Docker Desktop with WSL 2, visit:

https://docs.docker.com/go/wsl2/

mumu@MuJinqiu:~$

问题非常明确了:在 mumu 用户下,docker 命令不可用。这意味着 Docker Desktop 的 WSL 集成功能没有对该用户生效。

这通常是由于 Docker Desktop 的 WSL Integration 设置只对特定的 Linux 发行版生效,而 mumu 用户恰好不在其中。

解决方案

第一步:检查 Docker Desktop 的 WSL Integration 设置

  1. 在 Windows 右下角系统托盘中,右键点击 Docker 的鲸鱼图标 ,选择 "Settings" (设置)。

  2. 在设置窗口的左侧菜单中,选择 "Resources" -> "WSL Integration"

  3. 在右侧页面中,请务必:

    • 确保 "Enable integration with my default WSL distro" 这个选项是 开启 (Checked) 状态。

    • 在你正在使用的 Linux 发行版(例如 "Ubuntu" )列表中,确保其开关也是打开 (Checked) 的

  4. 点击右下角的 "Apply & Restart" 按钮,让 Docker Desktop 重启。

第二步:在 mumu 用户下测试 Docker

Docker Desktop 重启后,回到你的 WSL 终端(用户应为 mumu),再次运行测试命令:

bash

复制代码
docker ps

如果这次还是提示 command not found,需要手动将 docker 命令的路径添加到 PATH 环境变量中。

第三步:手动更新 PATH 环境变量(如果第二步无效)

执行以下命令,找到 Docker 客户端所在位置,并添加到环境变量中:

bash

复制代码
# 1. 查找 docker 命令的位置(通常位于 /usr/local/bin 或 /usr/bin)
/usr/local/bin/docker --version
/usr/bin/docker --version

# 2. 如果找到了,比如在 /usr/local/bin,则执行以下命令将其添加到 PATH
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

然后再次运行 docker ps

第四步:最后的验证

无论通过哪种方式,当 docker ps 命令成功执行后(即使列表是空的),就说明问题解决了。这时再回到 VS Code,点击左下角的绿色图标 ><,选择 "Reload Window" 重载窗口,Docker 侧边栏应该就能正常显示你的容器和镜像了。


总结

这次问题的根本原因在于,Docker Desktop 需要明确告知它,你希望它集成到哪个 WSL 发行版中 。你之前在 jinqiu 用户下工作正常,是因为 jinqiu 用户所在的 WSL 发行版可能恰好被 Docker 默认集成了。


突然想起来,Docker Desktop之前没打开,失败和这个有关系吗


有直接关系,而且是非常大的关系!

你发现的这个问题,恰恰是整个 Docker 环境出错的根本原因。

Docker Desktop 不启动,就相当于引擎没点火 。你在 WSL 里敲的 docker 命令就像一个遥控器,遥控器按钮按得再用力,车子本身没发动,它当然不会有任何反应。

为什么会这样?

Docker Desktop 是真正运行 Docker 引擎(dockerd)的地方。当你安装 Docker Desktop 并开启 WSL 集成后,它会在你的 Windows 系统里启动一个"大脑",并且在你的 WSL 环境里放了一个"遥控器"(也就是 docker 客户端命令)。

  • Docker Desktop 没打开 = 引擎没点火,车子是熄火状态。

  • 你在 WSL 里敲 docker ps = 按了一下遥控器的按钮。遥控器发出了指令,但车子没发动,所以它要么提示"找不到车",要么报错"无法连接"。

解决方案:按顺序完成"启动三部曲"

很简单,按下面的顺序操作就行:

  1. 启动 Docker Desktop :从 Windows 开始菜单找到 Docker Desktop 并启动它。等右下角系统托盘区的鲸鱼图标稳定下来,不再有动画效果。

  2. 重启 WSL 的集成 :在 Windows PowerShell 里运行 wsl --shutdown,让 WSL 彻底重启。之后重新打开 MobaXterm。

  3. mumu 用户下验证 :连接 WSL 后,在 mumu 用户下运行 docker ps,这一次应该能正常执行了。

我之前确实忽略了"确认 Docker Desktop 是否启动"这个最基础的步骤,一直在排查权限问题。谢谢你的提醒!你先按这个顺序操作一下,等 docker ps 命令能跑通之后,我们再继续。

后面启动 Docker Desktop 时遇到了windows 系统自动更新,导致 Docker Desktop 无法启动的问题。


Win11 自动更新导致 Docker Desktop 无法正常启动

电脑系统更新完之后,Docker Desktop已可以正常启动。

系统更新和 Docker 的问题都解决了。

接下来我们继续今天被打断的任务:mumu 用户下配置 Docker 环境,并让 VS Code 的 Docker 插件正常工作


确认 Docker 在 mumu 用户下可用

在 MobaXterm 中(确保是 mumu 用户),执行:

bash

复制代码
docker ps

预期结果

  • ✅ 显示正在运行的容器列表(包括 hbase

  • ❌ 如果提示 command not found,则继续下面的步骤


docker ps

bash 复制代码
mumu@MuJinqiu:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
mumu@MuJinqiu:~$

好的,docker ps 能执行了(虽然列表是空的),这说明 Docker 命令本身是可用的。HBase 容器没有显示,说明它目前没有在运行。


查看并恢复 HBase 容器

第一步:查看所有容器(包括已停止的)

bash

复制代码
docker ps -a | grep hbase

你应该能看到一个名为 hbase 的容器,状态可能是 Exited

bash 复制代码
mumu@MuJinqiu:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
mumu@MuJinqiu:~$ docker ps -a | grep hbase
6275b09205c7   harisekhon/hbase                                  "/entrypoint.sh"   2 days ago   Exited (137) 23 hours ago             hbase
mumu@MuJinqiu:~$

好的,找到了!你的 HBase 容器存在,但状态是 Exited (137),说明它退出了。137 通常表示容器被强制终止(可能是系统更新或 Docker 重启导致的)。


继续启动 HBase 容器

第二步:启动 HBase 容器

bash

复制代码
docker start hbase

第三步:验证 HBase 是否正常运行

bash

复制代码
docker ps | grep hbase

应该能看到 hbase 容器状态为 Up

bash 复制代码
mumu@MuJinqiu:~$ docker start hbase
hbase
mumu@MuJinqiu:~$ docker ps | grep hbase
6275b09205c7   harisekhon/hbase   "/entrypoint.sh"   2 days ago   Up 42 seconds   0.0.0.0:2181->2181/tcp, [::]:2181->2181/tcp, 0.0.0.0:16000->16000/tcp, [::]:16000->16000/tcp, 0.0.0.0:16010->16010/tcp, [::]:16010->16010/tcp, 0.0.0.0:16020->16020/tcp, [::]:16020->16020/tcp, 0.0.0.0:16030->16030/tcp, [::]:16030->16030/tcp   hbase
mumu@MuJinqiu:~$

🎉 HBase 容器已成功启动!

现在来验证一下 HBase 是否正常工作。


验证 HBase Shell

bash

复制代码
docker exec -it hbase hbase shell

进入 Shell 后,执行以下命令:

text

复制代码
status 'simple'
list

如果看到 1 live servers0 row(s),说明 HBase 运行正常。

退出 Shell:

text

复制代码
exit

访问 HBase Web UI

浏览器打开:http://localhost:16010

你应该能看到 HBase Master 的状态页面,包括 Region Servers 等信息。

第四步:测试 HBase Shell

bash

复制代码
docker exec -it hbase hbase shell

进入 Shell 后执行:

text

复制代码
status 'simple'
list
exit

bash 复制代码
mumu@MuJinqiu:~$ docker exec -it hbase hbase shell
2026-06-03 11:09:40,253 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.1.3, rda5ec9e4c06c537213883cca8f3cc9a7c19daf67, Mon Feb 11 15:45:33 CST 2019
Took 0.0017 seconds
hbase(main):001:0> status 'simple'
active master:  6275b09205c7:16000 1780484773276
0 backup masters
1 live servers
    6275b09205c7:16020 1780484774057
        requestsPerSecond=0.0, numberOfOnlineRegions=3, usedHeapMB=53, maxHeapMB=3933, numberOfStores=5, numberOfStorefiles=5, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeKB=0, readRequestsCount=15, filteredReadRequestsCount=0, writeRequestsCount=4, rootIndexSizeKB=0, totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, coprocessors=[MultiRowMutationEndpoint]
0 dead servers
Aggregate load: 0, regions: 3
Took 0.4251 seconds
hbase(main):002:0> list
TABLE
test
1 row(s)
Took 0.0239 seconds
=> ["test"]
hbase(main):003:0> exit
mumu@MuJinqiu:~$

🎉 HBase 完全恢复正常!

从输出可以看到:

检查项 状态 说明
status 'simple' ✅ 1 live servers, regions: 3 HBase 集群正常运行
list ✅ 显示 test 之前创建的表还在
连接 ✅ 成功进入 Shell 一切正常

当前环境总览

经过今天的一系列操作,你的环境已经全部恢复正常:

组件 状态 验证方式
Windows 更新 ✅ 已完成 系统重启后正常
Docker Desktop ✅ 正常运行 鲸鱼图标静止
WSL 中 Docker ✅ 命令可用 docker ps 正常
HBase 容器 ✅ 已启动 docker ps 显示 Up
HBase Shell ✅ 可连接 status 'simple' 正常
HBase Web UI ✅ 可访问 http://localhost:16010

后续建议

  1. 保持 Docker Desktop 开机自启(可选):

    • Docker Desktop → Settings → General → ✅ Start Docker Desktop when you sign in to your computer
  2. 定期清理无用容器和镜像

    bash

    复制代码
    # 清理已停止的容器
    docker container prune
    
    # 清理不使用的镜像
    docker image prune
  3. 备份重要数据:如果 HBase 中有重要数据,建议定期备份容器数据卷


不对啊,我们不是要让 VS Code 的 Docker 插件正常工作?


我们刚才专注于恢复 HBase 容器,但今天下午的核心目标是 让 VS Code 的 Docker 插件正常工作

现在 HBase 已经正常运行,我们继续完成这个目标。


第一步:确认 VS Code 已连接到 WSL

  1. 打开 VS Code

  2. 查看左下角,应该显示 WSL: Ubuntu

  3. 如果没有显示,点击左下角的绿色图标 ><,选择 "Connect to WSL"


第二步:重新加载 VS Code 窗口

Ctrl+Shift+P,输入 Reload Window,回车。这会让 VS Code 重新加载,并刷新 Docker 插件的连接。


第三步:检查 Docker 插件

  1. 点击左侧活动栏的 扩展图标 (或按 Ctrl+Shift+X

  2. 在搜索框中输入 @installed docker

  3. 确认 Docker 插件(ms-azuretools.vscode-docker)已安装,并且显示 "WSL: Ubuntu - 已安装"

  4. 如果未安装或显示在 Windows 端,点击 "在 WSL: Ubuntu 中安装"


第四步:打开 Docker 面板

  1. 点击左侧活动栏的 Docker 图标(🐳)

  2. 如果图标不显示,在活动栏空白处右键 → 勾选 Docker

  3. 或者按 Ctrl+Shift+P,输入 Docker: Focus on Containers View,回车


第五步:预期结果

Docker 面板应该显示:

  • CONTAINERShbase(运行中)

  • IMAGESharisekhon/hbase 等镜像


如果还是看不到容器

在 WSL 终端中执行以下命令,确认 Docker 环境正常:

bash

复制代码
# 确认 Docker 命令可用
docker ps

# 查看当前 Docker 上下文
docker context ls

然后在 VS Code 中执行 "Developer: Reload Window"


现在按步骤操作,告诉我 Docker 面板是否能显示 hbase 容器。


图标不显示,在活动栏空白处右键 → 没有 勾选 Docker


从截图可以看出,Docker 插件在 WSL 中已经正确安装(已显示"在 WSL:Ubuntu 上启用扩展"),但 Docker 面板(图标)没有出现在左侧活动栏,这通常是视图被意外关闭或未激活导致的。

既然右键菜单里也没有 Docker 选项,我们用命令面板直接打开它。


直接打开的方式前面有,这里不再赘述。

相关推荐
IDIOT___IDIOT1 小时前
Docker 集群运行 Spark 的一些记录
docker·容器·spark
乐于分享的阿乐2 小时前
(二)VSCode搭建python环境(详细图文保姆级教程)
ide·vscode·python
北执南念2 小时前
Docker实用篇2
运维·docker·容器
踏着七彩祥云的小丑2 小时前
AI学习——Docker 打包与部署
人工智能·学习·docker·ai
带娃的IT创业者2 小时前
1-Click GitHub Token Stealing:深入解析 VSCode 中的惊险漏洞
ide·vscode·github·安全漏洞·github token·1-click
小天呐3 小时前
重学docker
docker·容器
IDIOT___IDIOT3 小时前
Windows 安装 Docker Desktop
windows·docker·容器
gsls20080813 小时前
JVM 堆内存参数 & Docker 容器适配,一次讲清楚
jvm·docker·容器
Lumbrologist15 小时前
【零基础部署】Docker 部署 AutoGen 多 Agent 对话框架保姆级教程
运维·docker·容器