Skip to content

Windows Docker 错误:找不到 \.\pipe\docker_engine_linux 文件

问题描述

在 Windows 10 或 Windows 11 系统上运行 Docker 命令时,可能会遇到以下错误:

Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file specified.

这个错误表明 Docker 守护进程无法启动或连接,通常是因为 Docker Desktop 没有正确运行或其依赖的服务出现问题。

解决方案

1. 重启 Docker Desktop (最简单有效的方法)

大多数情况下,只需重启 Docker Desktop 即可解决此问题:

  1. 右键单击系统托盘中的 Docker 图标
  2. 选择 "Restart" (重启) 选项
  3. 等待 Docker 重新启动完成

TIP

这是最常见的解决方案,适用于大多数情况。Docker Desktop 4.16.3 及以上版本已经修复了此问题。

2. 重启 WSL (Windows 子系统 for Linux)

如果重启 Docker 无效,尝试重启 WSL:

powershell
# 在命令提示符或 PowerShell 中执行
wsl --shutdown

然后重新启动 Docker Desktop,并在弹出的通知中点击 "Restart"。

WARNING

如果 wsl --shutdown 命令卡住,可以通过任务管理器强制结束 "Windows Subsystem for Linux" 进程。

3. 更新 WSL 版本

如果收到与 --mount 选项相关的错误,可能需要更新 WSL:

powershell
# 更新 WSL
wsl --update

4. 以管理员身份运行 Docker

有时权限问题会导致此错误:

  1. 完全退出 Docker Desktop
  2. 右键单击 Docker Desktop 快捷方式
  3. 选择 "以管理员身份运行"

5. 检查并重启 Docker 服务

通过 Windows 服务管理器检查 Docker 服务状态:

  1. 按 Win + R,输入 services.msc
  2. 找到 "Docker Desktop Service"
  3. 右键单击选择 "重启"

或者使用 PowerShell:

powershell
# 停止 Docker 服务
Net stop com.docker.service

# 启动 Docker 服务
Net start com.docker.service

6. 切换 Docker 引擎类型

如果你在 Windows 和 Linux 容器之间切换时出现问题,可以手动切换引擎:

powershell
# 导航到 Docker 安装目录
cd "C:\Program Files\Docker\Docker"

# 切换到 Linux 引擎
./DockerCli.exe -SwitchLinuxEngine

7. 启用必要的 Windows 功能

确保已启用 Hyper-V 和容器功能:

powershell
Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All

8. 清理并重新安装 Docker

如果以上方法都无效,可能需要完全重新安装 Docker:

警告

这将删除所有本地 Docker 镜像和容器,请确保已备份重要数据!

  1. 通过 "程序和功能" 卸载 Docker Desktop
  2. 删除以下目录:
    • %AppData%/Docker
    • C:\Users\[用户名]\.docker
  3. 重启计算机
  4. 从 Docker 官网下载最新版本并安装

9. 检查特定场景的解决方案

GitHub Actions 自托管运行器

如果使用 GitHub Actions 自托管运行器遇到 "Access is denied" 错误:

  • 将运行器服务的登录权限从 "此账户" 改为 "本地系统账户"

文件共享设置

确保项目文件夹已添加到 Docker 的文件共享列表中:

  1. 打开 Docker Desktop 设置
  2. 转到 "Resources" → "File Sharing"
  3. 添加项目文件夹
  4. 点击 "Apply & Restart"

换行符问题

如果你的 Dockerfile 或 docker-compose.yml 文件使用 LF 而不是 CRLF 换行符,尝试改为 CRLF。

预防措施

  1. 保持 Docker 和 WSL 更新:定期检查并安装最新版本
  2. 正确关闭 Docker:避免强制终止 Docker 进程
  3. 监控系统资源:确保有足够内存和磁盘空间供 Docker 使用
  4. 使用稳定的网络连接:网络问题可能导致 Docker 服务异常

总结

\\.\pipe\docker_engine_linux 错误通常是由于 Docker Desktop 或其依赖服务没有正确运行导致的。按照从简单到复杂的顺序尝试上述解决方案,大多数情况下通过重启 Docker 或 WSL 即可解决问题。如果问题持续存在,考虑更新或重新安装 Docker。