需启用Docker Desktop的WSL集成并配置CLI:一、在Settings→Resources→WSL Integration中开启默认及目标发行版集成;二、验证which docker、docker --version等命令是否正常;三、若失败则手动创建软链接至/mnt/wslg/下的docker CLI;四、通过wsl.conf设置automount选项修复权限问题;五、配置cli-plugins支持docker compose v2。

如果您已在Windows上安装Docker Desktop并启用WSL 2集成,但无法在Ubuntu等WSL发行版终端中直接执行docker命令,则可能是WSL发行版未启用Docker Desktop的WSL集成或Docker CLI未正确暴露。以下是解决此问题的步骤:
一、确认Docker Desktop已启用WSL集成
该步骤确保Docker Desktop将Docker守护进程通过Unix域套接字暴露给WSL发行版,并允许WSL内直接调用docker命令。
1、启动Docker Desktop,等待右下角托盘图标显示为绿色且状态为“Docker Engine running”。
2、右键点击托盘图标,选择“Settings”。(或从主界面顶部菜单栏点击“Settings”)
3、在左侧导航栏中点击“Resources”,再点击子项“WSL Integration”。
4、在右侧页面中,确保“Enable integration with my default WSL distro”已勾选。
5、向下滚动,找到您正在使用的发行版(例如Ubuntu),将其右侧开关置为ON。
6、点击“Apply & Restart”按钮,等待Docker Desktop重启完成。
二、验证WSL发行版中Docker CLI可用性
该步骤用于确认WSL环境是否已自动获得Docker客户端,并能与Docker Desktop后台服务通信。
1、打开WSL终端(如Ubuntu),输入wsl命令启动对应发行版。
2、执行which docker,应返回/usr/bin/docker或类似路径。
3、执行docker --version,应正常输出版本号(如Docker version 26.0.0)。
4、执行docker info --format '{{.OSType}}/{{.Architecture}}',应返回linux/x86_64。
5、若提示Cannot connect to the Docker daemon,请检查Docker Desktop是否运行中,且WSL Integration已为当前发行版开启。
三、手动配置Docker CLI(当自动集成失效时)
该方法通过符号链接方式将Docker Desktop提供的WSL兼容客户端软链至系统PATH路径,绕过自动集成机制。
1、在WSL终端中执行ls /mnt/wslg/docker-desktop-data/version-pack-data/,确认存在类似docker-desktop-cli的目录。
2、执行sudo mkdir -p /usr/local/bin确保目标目录存在。
3、执行sudo ln -sf /mnt/wslg/docker-desktop-data/version-pack-data/docker-desktop-cli/docker /usr/local/bin/docker。
4、执行sudo chmod +x /usr/local/bin/docker赋予可执行权限。
5、执行hash -r刷新命令哈希缓存,或新开终端窗口。
6、再次运行docker ps,应返回空列表或容器列表,而非连接错误。
四、修复Docker命令权限拒绝错误
该方法解决WSL中执行docker命令时出现permission denied或operation not permitted的问题,通常因WSL文件系统挂载选项限制所致。
1、关闭所有WSL实例:在PowerShell中执行wsl --shutdown。
2、在Windows中打开%USERPROFILE%\AppData\Local\Packages\,定位到您的发行版包名(如CanonicalGroupLimited.UbuntuonWindows_...)。
3、进入其子目录LocalState\wsl.conf,若不存在则新建该文件。
4、向wsl.conf中写入以下内容:
[automount]
options = "metadata,uid=1000,gid=1000,umask=022"
[interop]
enabled = true
5、保存后重新启动WSL:wsl,再测试docker run --rm hello-world。
五、启用Docker Compose V2支持
该步骤确保WSL发行版中docker compose(非docker-compose)命令可用,Docker Desktop默认提供V2实现。
1、在WSL终端中执行docker compose version,若报错“command not found”,说明未启用。
2、执行sudo mkdir -p /usr/libexec/docker/cli-plugins。
3、执行sudo ln -sf /usr/bin/docker-compose /usr/libexec/docker/cli-plugins/docker-compose。
4、若系统无/usr/bin/docker-compose,则需确认Docker Desktop安装时勾选了“Install required Windows components for WSL 2”选项。
5、重启Docker Desktop后,在WSL中再次运行docker compose version,应输出V2版本信息。










