格尔温 2025-07-28 21:23 采纳率: 0%
浏览 71

wsl的网络模式的mirrored模式,docker下拉取镜像时报错,如何解决?

wsl的网络模式的mirrored模式,docker下拉取镜像时报错。error during connect: Post "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.51/images/create?fromImage=docker.io%2Flibrary%2Fhello-world&tag=latest": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-07-28 21:24
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你遇到的错误是由于 WSL(Windows Subsystem for Linux) 使用了 Mirrored 网络模式,而 Docker 无法正确连接到 WSL 的 Docker 服务。这个错误提示表明 Docker 正在尝试通过命名管道(//./pipe/dockerDesktopLinuxEngine)与 Docker Desktop 进行通信,但该路径不存在或未被正确配置。


    ✅ 问题原因分析

    • Mirrored 网络模式:在 WSL2 中,网络模式为 mirrored 时,容器的网络与 Windows 主机共享,但此时 Docker 可能无法正确识别 WSL 的 Docker 守护进程。
    • Docker Desktop 配置问题:如果 Docker Desktop 没有正确配置 WSL2 支持,可能会导致 Docker 无法连接到 WSL 中的 Docker 守护进程。
    • 路径错误:错误信息中提到的 //./pipe/dockerDesktopLinuxEngine 是 Docker Desktop 在 Windows 上使用的命名管道,但在 WSL 中并不适用。

    🔧 解决方案

    1. 确保 WSL2 已启用并设置为默认版本

    wsl --set-default-version 2
    

    重要提示:如果你使用的是 WSL1,请切换为 WSL2。


    2. 安装并配置 Docker Desktop 以支持 WSL2

    a. 安装 Docker Desktop

    Docker 官网 下载并安装 Docker Desktop。

    b. 启用 WSL2 支持

    • 打开 Docker Desktop。
    • 点击右上角的 Settings(设置) → General
    • 勾选 "Use the WSL2 based engine"
    • 点击 Apply & Restart

    加粗重点必须启用 WSL2 支持,否则 Docker 无法与 WSL2 交互。


    3. 验证 Docker 是否可以访问 WSL2

    在 WSL 终端中运行以下命令:

    docker info | grep -i wsl
    

    你应该看到类似如下输出:

    Operating System: Ubuntu 22.04.3 LTS
    WSL: 2
    

    如果没有显示 WSL 相关信息,说明 Docker 没有正确配置。


    4. 修改 Docker 客户端配置文件(可选)

    如果你仍然遇到连接问题,可以手动指定 Docker 守护进程地址:

    在 WSL 终端中编辑 ~/.docker/config.json 文件:

    nano ~/.docker/config.json
    

    添加以下内容(如果文件不存在则新建):

    {
      "host": "unix:///var/run/docker.sock"
    }
    

    加粗重点确保 Docker 客户端指向正确的 socket 地址。


    5. 重启 Docker Desktop 和 WSL

    # 重启 WSL
    wsl --shutdown
    
    # 重新启动 WSL
    wsl
    

    然后在 WSL 终端中运行:

    docker info
    

    6. 检查 Docker Desktop 的网络配置

    • 如果你使用的是 Mirrored 网络模式,请尝试将 WSL 的网络模式改为 NATPrivate,以便 Docker 能够正常工作。

    在 WSL 中运行以下命令查看当前网络模式:

    cat /etc/wsl.conf
    

    如果存在 network.mode = mirrored,将其改为:

    [network]
    mode = nat
    

    然后重启 WSL:

    wsl --shutdown
    wsl
    

    🔄 总结解决方案步骤

    1. 确保 WSL2 已启用并设置为默认版本

      wsl --set-default-version 2
      
    2. 安装并启用 Docker Desktop 的 WSL2 支持

      • 打开 Docker Desktop 设置 → General → 勾选 Use WSL2 engine.
    3. 验证 Docker 是否可以访问 WSL2

      docker info | grep -i wsl
      
    4. 配置 Docker 客户端指向正确的 socket 地址

      {
        "host": "unix:///var/run/docker.sock"
      }
      
    5. 重启 WSL 和 Docker Desktop

      wsl --shutdown
      wsl
      
    6. 检查并修改 WSL 网络模式(如需要)
      修改 /etc/wsl.conf 中的 network.modenat


    📌 注意事项

    • 不要在 WSL 中使用 docker-machine,因为这会与 Docker Desktop 冲突。
    • 如果你使用的是 Windows Terminal,请确保其使用的是 WSL2 分发版。
    • 如果你仍然无法解决,建议卸载并重新安装 Docker Desktop,并确保 WSL2 正常工作。

    如有更多关于 Docker 和 WSL 的问题,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 7月28日