Docker: 尝试连接时发生错误

Docker: An error occurred trying to connect

已在 Windows 上安装 Docker,另外还安装了 2 个 Oracle VM VirualBox 和 Kitematic。我在我的 Windows 10 PC 中禁用了 Hyper-V。现在的问题是我无法从 DockerHub 下载任何 Docker 图像,甚至我也无法 运行 命令 as

Docker info

两端显示如下错误。

An error occurred trying to connect: Get http://localhost:2375/v1.21/info: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it.

如果我 运行 它在 Docker QuickStart 终端中它可以工作,但不能在 PowerShell 或 MSBuild 中工作。

如果您使用 windows 命令提示符而不是 Docker 快速启动终端,请参阅 official docs 您应该执行以下步骤(假设您的 docker 机器名称为 默认):

  1. docker-machine start default 或新建一个
  2. docker-machine ls会告诉你你的机器运行
  3. docker-machine env --shell cmd default 你会看到类似

    的内容
    SET DOCKER_TLS_VERIFY=1
    SET DOCKER_HOST=tcp://192.168.99.100:2376
    SET DOCKER_CERT_PATH=C:\Users\Arseny\.docker\machine\machines\default
    SET DOCKER_MACHINE_NAME=default
    REM Run this command to configure your shell:
    REM     FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i
    
  4. 运行 FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i
  5. 尽情享受

我要做的就是 运行

docker-machine env --shell cmd default

然后

eval "$(boot2docker shellinit)"

如果您想使用 PowerShell(在 Windows 7 中)而不是 Docker 快速启动终端,请在您的 powershell 终端中逐步输入以下命令:

NOTE: You must have to start Docker Quickstart Terminal first before performing below operations

docker-machine.exe env --shell powershell 它将在终端上显示以下命令:

$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://192.168.99.100:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\pratikpat\.docker\machine\machines\default"
$Env:DOCKER_MACHINE_NAME = "default"
# Run this command to configure your shell:
# & "C:\Program Files\Docker Toolbox\docker-machine.exe" env --shell powershell | Invoke-Expression

执行最后显示的命令来配置您的 shell:

& "C:\Program Files\Docker Toolbox\docker-machine.exe" env --shell powershell | Invoke-Expression

当它发生在我身上时,我是次要用户,换句话说 Docker 安装在不同的帐户下。所以我尝试以管理员身份[重新]创建机器:

C:\WINDOWS\system32>docker-machine create --driver "hyperv" default Creating CA: C:\Users\nonAdmin\.docker\machine\certs\ca.pem Creating client certificate: C:\Users\nonAdmin\.docker\machine\certs\cert.pem Running pre-create checks... (default) Image cache directory does not exist, creating it at C:\Users\nonAdmin\.docker\machine\cache... (default) No default Boot2Docker ISO found locally, downloading the latest release... (default) Latest release for github.com/boot2docker/boot2docker is v1.12.3 (default) Downloading C:\Users\nonAdmin\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.12.3/boot2docker.iso... (default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100% Creating machine... (default) Copying C:\Users\nonAdmin\.docker\machine\cache\boot2docker.iso to C:\Users\nonAdmin\.docker\machine\machines\default\boot2docker.iso... (default) Creating SSH key... (default) Creating VM... (default) Using switch "DockerNAT" (default) Creating VHD (default) Starting VM... (default) Waiting for host to start... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available...

遗憾的是,它没有用。即使 运行 docker 在 Admin shell 中也会失败。

我在 Docker 终端的 Windows 7 上遇到了同样的错误。所以我不得不做以下事情。如果像我这样的人正在搜索这个。

$ docker-machine rm default
$ docker-machine create --driver virtualbox default

您可以在 docker 桌面上解决问题;

在“设置”->“常规”下,您是否在未启用 TLS 的情况下在 tcp://localhost:2375 上安装了 Expose 守护程序?如果你想按照描述访问守护进程,你需要这样做。