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程如下:
- 默认机器被创build
- 机器的启动器(kinamatic /“Docker快速启动terminal”/ cmd)等待机器启动,获取它的IP地址并将linux ip:port设置为服务地址(而不是127.0.0.1:2375) / powershellvariables
- 从这一点来说,所有的
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 – 我升级到最新的夜间版本.3-102224),重新生成默认图像,似乎解决它。 由于Windows 10不是由docker和virtualbox正式支持,我不知道这是否是同样的事情,导致你得到证书错误,无论如何可以尝试从虚拟机复制证书(你有代码块中的path)添加到本地用户目录(它映射到虚拟机中的/ c / Users / X /)
以下为我工作(Docker Toolbox 1.8.1b和Windows 7)。 这是@ baptiste-gaillard在上面评论中概述的简化版本。 简单的回答:从开始使用VirtualBox 5.03或更高版本。
- 下载VirtualBox 5.03(在这篇文章的时候每晚构build)和扩展包。
- 重新启动笔记本电脑。 (清除运行的VirtualBox的东西。)
- 安装VirtualBox 5.03和扩展包5.03。
- 完全删除默认虚拟机(删除文件)。
- 重新运行Docker快速入门terminal快捷方式来生成默认的虚拟机。
快速启动脚本似乎与VirtualBox 5.03相比,更好地创build必要的TLS键。
如你所示的相同的问题,并在几个小时前刚刚修复。
所有需要做的就是禁用Hyper-V。 使用pipe理员权限运行命令提示符并运行以下命令:
bcdedit /set hypervisorlaunchtype off
重新启动您的PC,打开virtualbox并在重新启动后删除默认vm,返回到docker quickstartterminal,并input以下命令:
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 Quick Startterminal,而是打开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
我不需要执行任何命令行
我希望这将有助于一些机构..
- 更新到5.0.3以上的最新虚拟框
- 重新启动系统
- 打开虚拟框并删除默认的虚拟机
- 打开docker快速启动terminal
- 运行
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下载适用于windows(1.10.2)的Docker工具的最新版本右键单击下载的文件并select“以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正确(我相信) – 例如,停电!
-
closuresDocker虚拟机
-
closuresKitematic
-
启动Docker快速入门terminal
-
inputterminal:
docker-machine.exe -D ls
- 开始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机器