Docker for Windows无法正常工作

我已经安装了Docker工具箱,我得到了一切的错误:

Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it.. * Are you trying to connect to a TLS-enabled daemon without TLS? * Is your docker daemon up and running? 

docker version输出:

 Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:49:29 UTC 2015 OS/Arch: windows/amd64 Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it.. * Are you trying to connect to a TLS-enabled daemon without TLS? * Is your docker daemon up and running? 

但是虚拟机在VirtualBox下运行。 我到处search,但找不到解决scheme。

UPDATE1 :我正在使用Windows 8.1,也试图通过Kinematic也开始。

UPDATE2:当我尝试Virtualbox Test Build 5.0.3或更高版本时,所有的工作都像魅力一样。 你可以在这里下载: https : //www.virtualbox.org/wiki/Testbuilds

赶紧跑:

 "C:\Program Files\Docker Toolbox\docker-machine" ls 

获取机器名称,然后运行:

 "C:\Program Files\Docker Toolbox\docker-machine" env <MACHINE_NAME_HERE> --shell=[cmd|powershell] 

你应该得到这样的东西:

 "C:\Program Files\Docker Toolbox\docker-machine" env default --shell=cmd set DOCKER_TLS_VERIFY=1 set DOCKER_HOST=tcp://192.XXX:2376 set DOCKER_CERT_PATH=C:\Users\X\.docker\machine\machines\default set DOCKER_MACHINE_NAME=default # Run this command to configure your shell: # copy and paste the above values into your command prompt 

我也收到一个错误, open C:\Users\X\.docker\machine\machines\default\server.pem: The system cannot find the file specified. 并通过升级我的VirtualBox到版本5.0.3(从他们每晚的构build )

长版本:

我遇到了同样的问题,之后, 安装手册中的“使用来自Windows命令行提示符(cmd.exe)的Docker”部分将我置于正确的方向

基本上,docker工作的方式是将“docker”命令传递给docker服务(在端口2375上运行)。 当你从windows主机运行Docker时,服务实际上在docker创build的linux主机上运行(你可以通过打开virtualbox ui来看到它)。

通常的stream程如下:

  1. 默认机器被创build
  2. 机器的启动器(kinamatic /“Docker快速启动terminal”/ cmd)等待机器启动,获取它的IP地址并将linux ip:port设置为服务地址(而不是127.0.0.1:2375) / powershellvariables
  3. 从这一点来说,所有的docker ...命令都被发送到linux主机,所有的东西都和原生的linux一样

问题是,机器设置有一些问题(我猜测新的虚拟盒子,但我不知道,有时间去挖掘它)。 你可以通过runnung的ls命令看到,并注意到(至less在我的情况下)机器的状态是“超时”,没有url,不像手册中显示的输出。

这会导致环境值不被设置,并且docker ...命令失败。

除了运行命令之外,还可以启动Docker Quickstart Terminal ,它使用sh shell执行相同的操作

关于证书错误,我尝试使用以下方法重新生成虚拟机中的证书:

 /usr/local/bin/generate_cert --overwrite --host=default,127.0.0.1,10.0.2.15,192.168.99.100 --ca=/var/lib/boot2docker/tls/ca.pem --ca-key=/var/lib/boot2docker/tls/cakey.pem --cert=/var/lib/boot2docker/tls/server.pem --key=/var/lib/boot2docker/tls/serverkey.pem 

当我试图将证书复制到主机时,我得到了“协议错误”,这提醒我一个旧的virtualbox共享文件夹错误,所以这可能不是一个docker问题,但与virtualbox – 我升级到最新的晚上版本(5.0 .3-102224),重新生成默认图像,似乎解决了它。 由于Windows 10不是由docker和virtualbox正式​​支持,我不知道这是否是同样的事情,导致你得到证书错误,无论如何可以尝试从虚拟机复制证书(你有代码块中的path)复制到本地用户目录(映射到虚拟机中的/ c / Users / X /)

以下为我工作(Docker Toolbox 1.8.1b和Windows 7)。 这是@ baptiste-gaillard在上面评论中概述的简化版本。 简单的回答:从开始使用VirtualBox 5.03或更高版本。

  1. 下载VirtualBox 5.03(在这篇文章的时候每晚构build)和扩展包。
  2. 重新启动笔记本电脑。 (清除运行的VirtualBox的东西。)
  3. 安装VirtualBox 5.03和扩展包5.03。
  4. 完全删除默认虚拟机(删除文件)。
  5. 重新运行Docker快速入门terminal快捷方式来生成默认的虚拟机。

快速启动脚本似乎与VirtualBox 5.03相比,更好地创build必要的TLS键。

如你所示的相同的问题,并在几个小时前刚刚修复。

所有需要做的就是禁用Hyper-V。 使用pipe理员权限运行命令提示符并运行以下命令:

 bcdedit /set hypervisorlaunchtype off 

重新启动您的PC,打开virtualbox并在重新启动后删除默认vm,返回到docker quickstartterminal并将以下命令放入:

 docker run hello-world 

你完成了! 希望它能解决你的问题

这对我有用

1)首先启动命令行工具,运行获取机器的ip地址

docker机ls命令

2)重新生成证书docker-machine regenerate-certs

3)在我的情况下,手动设置evnvariables证书的位置是不同的

设置DOCKER_TLS_VERIFY = 1

设置DOCKER_HOST = tcp:// machine_IP:2376

设置DOCKER_CERT_PATH = C:\ Users \ X.docker \ machine \ certs

设置DOCKER_MACHINE_NAME =默认

现在运行docker版本

这是我的情况的输出

客户端:版本:1.8.1 API版本:1.20 Go版本:go1.4.2 Git commit:d12ea79内置:Thu Aug 13 02:49:29 UTC 2015 OS / Arch:windows / amd64

服务器:版本:1.8.1 API版本:1.20 Go版本:go1.4.2 Git commit:d12ea79内置:Thu Aug 13 02:49:29 UTC 2015 OS / Arch:linux / amd64

Docker Toolbox(在1.8.x)安装默认configurationDocker守护进程通过TLS协议(版本1.8)使用安全连接。

如果您使用的守护进程的旧版本不安全,至less意味着两件事: – 端口号从2375更改为2376 – 守护进程客户端需要提交一个证书来与您的docker引擎/服务器进行通信。

所以sandiindia的回复显示了对docker客户端精确的连接到docker服务器/引擎的环境variables:

 #You're using a TLS secured daemon : set DOCKER_TLS_VERIFY=1 # Precise the Docker Host IP and port, the TLS default is 2376 set DOCKER_HOST=tcp://*<docker_host_IP>*:2376 # The paths to the certificate and client key needed to authenticate to the daemon # You should have 3 files in this directory : ca.pem, cert.pem and key.pem # In my case the default path looks like : set DOCKER_CERT_PATH=C:\Users\*<username>*\.docker\machine\machines\default #the name of your Docker Host VM : set DOCKER_MACHINE_NAME=default 

有关TLSconfiguration的Docker文档: https : //docs.docker.com/articles/https/

我希望它有帮助;)

我也有同样的问题,但我能够解决它,而不必在命令行上input任何东西,它只是开箱即用。

事实certificate,有一些初始化步骤丢失了,正如上面接受的答案中所指出的那样。 为什么不是默认的Docker安装已经这样做? 我也有失踪的证书。 所以,我卸载了一切,从头开始重新启动。 但是,安装完成后,这次不要先打开Docker快速入门terminal,而是打开Kitematic来为您做第一次初始化

Kitematic为我创build了证书,设置了缺less的envvariables,然后打开了Docker Quick Startterminal。 我inputdocker run hello-world ,然后docker version ,这次它按预期工作,没有错误消息。

请注意,当我首先打开快速启动terminal时,这不起作用

我正在testingVMWare 10实例中的Docker,并且我能够在任何情况下复制这个问题及其解决scheme(解决方法)。

我希望这有帮助。

我通过简单地删除VirtualBoxpipe理器中的默认虚拟机,重新启动PC(以防万一),然后重新运行Docker快速入门terminal来解决我的问题。 而已。

Docker 1.8.2和Virtual Box 5.0.4

 Close the virtual machine from Virtual Box (you don't have to delete it) Close Kitematic Close Docker Quickstart Terminal 

现在按顺序做这件事:

 Open Kitematic Open Docker Quickstart Terminal 

在Kitematic之前不要打开Docker快速入门terminal,因为Kitematic将初始化Docker快速入门terminal

我不需要执行任何命令行

我希望这将有助于一些机构..

  1. 更新到5.0.3以上的最新虚拟框
  2. 重新启动系统
  3. 打开虚拟框并删除默认的虚拟机
  4. 打开docker快速启动terminal
  5. 运行docker run hello-world

你完成了。

删除并删除笔记本电脑上的所有旧v.machines:1.打开VirtualBox,右键单击“默认”,删除,“删除所有文件”。 2.命令提示符(以pipe理员身份运行)> docker-machine rm default

卸载Virtualbox,Docker工具箱和Git。 导航到c:\ Users \ Vinita,并删除dirs。 .docker和.Virtualbox CClean文件和registry。 重启。

清洁完成。

I.从Docker Toolbox下载最新版本的Docker工具(1.10.2)右键单击下载的文件并以“pipe理员身份运行”安装 – Docker Quickstart,Kitematic和Virtualbox。

II。 从Testbuilds – Oracle VM VirtualBox下载VirtualBox(5.01.15-105696-win.exe)的最新testing版本。 以pipe理员身份再次运行

(您可以忽略任何警告并覆盖已经安装了Docker的VirtualBox)。

到目前为止,没有什么不寻常的。 我们刚刚安装了具有pipe理权限的软件。 现在,控制面板>networking和共享中心>更改适配器设置:右键单击属性的VirtualBox主机专用networking#2。 检查> VirtualBox NDIS6桥接networking驱动程序。 (如果已经选中,取消选中并再次选中。)

你完成了。 这是我们雇用的唯一解决scheme!

Kitematic和Docker Quickstart都应该可以工作。

第一次右击Kitematic并以pipe理员身份运行。 在Windows 10上testing

对于使用VirtualBox 5.0.14的Windows 10,这发生了几次。

这似乎与closuresVirtualBox正确(我相信) – 例如,停电!

  1. closuresDocker虚拟机

  2. closuresKitematic

  3. 启动Docker快速入门terminal

  4. inputterminal:

docker-machine.exe -D ls

  1. 开始Kitematic。 VM现在出现。

如果这不起作用,请再次尝试1-3,这次尝试重新生成证书。 然后做第4步。

有一件很奇怪的事情是,在docker端口的docker images中没有列出它们,但是说它不能连接到127.0.0.1:2375(但是docker-machine ls显示在192.168.99.100:2376上运行的默认机器)。

我在系统重启后运行docker映像时遇到了完全相同的错误。 我在Windows 7 64位上使用了docker version 1.10,使用virtualbox 5.0.10和mintty(terminal与Git for Windows一起使用)

执行docker-machine ls显示虚拟机处于超时状态。 $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default virtualbox Timeout所以我重新启动了虚拟机$ docker-machine restart default然后再列出状态告诉我cert被绑定到一个不正确的地址$ docker-machine ls Unable to query docker version: Get https://192.168.56.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.56.101然后我重新生成证书$ docker-machine regenerate-certs default和终于$ eval $(docker-machine env default --shell=bash)然后$ eval $(docker-machine env default --shell=bash)再次工作!

只需重新创build默认机器,然后运行

 docker-machine env default 

这个对我有用。

随着Docker 1.8.1d有相同的问题,已卸载1.8.1c。 最后通过安装最新的Virtual Box(5.0.18)解决问题,在提示时重新启动并启动Kitematic。 Kitematic一开始就失败了,并提供了删除和重新安装我所做的虚拟机的选项。 之后,我的快速入门terminal正常。

如果您使用Docker for Windows(testing版),请执行以下步骤:

  • 禁用“DockerNAT”networking适配器
  • 通过任务栏/docker/设置/重置为出厂默认值运行“重置为出厂默认值”

这听起来像虚拟框的问题,在我的情况下,我已经执行下面的步骤来解决这个问题

  • 通过“docker机停止”停止docker机
  • 在Windows操作系统中打开networking和共享中心
  • 点击更改适配器设置
  • 禁用VirtualBox-Host Onlynetworking
  • 通过“docker-machine start”启动Docker机器