WSL2 Ubuntu搭配Docker Desktop时docker daemon未作为服务运行的问题
Docker Desktop + WSL2 环境相关问题解答
响应WSL中Docker命令的进程
从你提供的ps -ef输出来看,这两个进程负责中转WSL内的Docker命令:
root 130 129 0 22:41 pts/0 00:00:00 /mnt/wsl/docker-desktop/docker-desktop-user-distro proxy --distro-name Ume 144 143 0 22:42 pts/1 00:00:00 docker serve --address unix:///home/me/.docker/run/docker-cli-api.sock
核心原因是:Docker Desktop搭配WSL2时,Docker daemon实际运行在Windows主机上,而非WSL的Ubuntu发行版内。WSL里的Docker命令行工具(CLI)通过上述代理/serve进程,跨WSL与Windows的边界,连接到Windows侧的dockerd服务。所以你在WSL里找不到本地的dockerd进程,也无法用service dockerd stop这类命令管理服务。
配置--api-cors-header实现Windows主机访问Docker API
要添加--api-cors-header参数,需要直接在Docker Desktop的配置中修改:
- 打开Docker Desktop,进入设置 -> Docker Engine选项卡
- 在弹出的JSON配置文件中,添加
"api-cors-header": "*"(若需限制域名,可替换为具体的允许地址,比如"http://192.168.x.x"),示例配置如下:{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "api-cors-header": "*" } - 点击Apply & Restart,等待Docker Desktop重启生效
- 若要通过HTTP访问Docker API,还需在设置 -> General里勾选"Expose daemon on tcp://localhost:2375 without TLS"(注意:该选项仅适合测试环境,生产环境建议启用TLS加密)
内容的提问来源于stack exchange,提问作者junshi356
相关产品推荐
相关产品推荐

