我现在已经安装了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?
但VM正在VirtualBox下运行。我到处搜索但无法找到解决方案。
UPDATE1 :我使用的是Windows 8.1,也尝试过使用Kinematic。
UPDATE2:当我尝试使用Virtualbox Test Build 5.0.3或更高版本时,一切都像魅力一样。您可以在此处下载:https://www.virtualbox.org/wiki/Testbuilds
答案 0 :(得分:62)
跑步:
"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.X.X.X: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(来自他们的nightly builds)
长版:
我遇到了同样的问题,之后和#34;在Windows命令行提示符下使用Docker(cmd.exe)&#34;来自installation manual的部分让我朝着正确的方向前进
基本上,docker的工作方式是&#34; docker&#34;命令被传递给docker服务(在端口2375上运行)。当您从Windows主机运行docker时,该服务实际上在docker创建的linux主机上运行(您可以通过打开virtualbox ui来查看它)。
通常的流程如下:
docker ...
命令都发送到linux主机,一切都像本机linux一样工作问题在于机器设置存在一些问题(我猜新的虚拟盒子,但我不确定并且有时间深入研究它)。你可以通过runnung看到ls
命令并注意到(至少在我的情况下)机器的状态是&#34;超时&#34;并且没有网址,与手册中显示的输出不同。
这会导致不设置环境值并且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
我在尝试将证书复制到主机时遇到了#34;协议错误,这提醒我一个旧的virtualbox共享文件夹错误,所以这可能不是docker的问题,而是虚拟机 - 我升级到最新的夜间版本(5.0.3-102224),重新生成默认图像,似乎解决了它。由于windows 10还没有得到docker和virtualbox的正式支持,我不确定这是否与导致你获得证书错误相同,无论如何都可以尝试从虚拟机中复制证书(你有代码块中的路径)到本地用户目录(它映射到虚拟机中的/ c / Users / X /)
答案 1 :(得分:8)
以下对我有用(Docker Toolbox 1.8.1b和Windows 7)。它是@ baptiste-gaillard在上述评论中概述的简化版本。简答:从一开始就使用VirtualBox 5.03或更高版本。
对于创建必需的TLS密钥,QuickBox文件似乎与VirtualBox 5.03相处得更好。
答案 2 :(得分:7)
与您展示的问题相同,并在几小时前修复了它。
所有需要做的就是禁用Hyper-V。使用管理员权限运行命令提示符并运行以下命令:
bcdedit /set hypervisorlaunchtype off
重新启动电脑,打开虚拟机并在重新启动后删除默认虚拟机,返回docker quickstart终端,并将以下内容放入命令:
docker run hello-world
你完成了!希望它能解决你的问题
答案 3 :(得分:5)
这对我有用
1)首先启动命令行工具,然后运行
获取机器IP地址docker-machine ls 命令
2)重新生成证书 docker-machine regenerate-certs
3)在我的情况下手动设置evn变量证书的位置不同
设置DOCKER_TLS_VERIFY = 1
设置DOCKER_HOST = tcp:// machine_IP:2376
设置DOCKER_CERT_PATH = C:\ Users \ X.docker \ machine \ certs
设置DOCKER_MACHINE_NAME =默认
现在运行 docker version
这是我案例中的输出
客户端: 版本:1.8.1 API版本:1.20 转到版本:go1.4.2 Git提交:d12ea79 建造:2015年8月13日星期四02:49:29 OS / Arch:windows / amd64
服务器: 版本:1.8.1 API版本:1.20 转到版本:go1.4.2 Git提交:d12ea79 建造:2015年8月13日星期四02:49:29 OS / Arch:linux / amd64
答案 4 :(得分:3)
Docker Toolbox(在1.8.x中)安装默认配置您的Docker守护程序通过TLS协议(版本1.8)使用安全连接。
如果您使用的是不受保护的旧版本守护程序,则至少意味着两件事: - 端口号从2375变为2376 - 您的守护程序客户端需要提供证书才能与您的docker engine / server通信。
所以sandiindia的回复表明了对于docker客户端来说连接到docker服务器/引擎的良好配置的环境变量:
#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
有关TLS配置的docker文档: https://docs.docker.com/articles/https/
我希望它有所帮助;)
答案 5 :(得分:3)
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 Quickstart终端,因为Kitematic将为Docker Quickstart Terminal初始化东西
我不需要执行任何命令行..
我希望这对某些人有所帮助..
答案 6 :(得分:2)
我也有同样的问题,但我能够解决它而无需在命令行上输入任何内容,它只是开箱即用。
事实证明,正如上面接受的答案所指出的那样,缺少一些初始化步骤。为什么默认的Docker安装不是这样做的?我也缺少证书。所以,我卸载了所有内容并从头开始重新启动。但是,安装完成后,这次首先不要打开Docker快速入门终端,而是打开Kitematic而不是为你做第一次初始化。
Kitematic为我创建了证书,设置了缺少的env变量,然后我打开了Docker Quick Start终端。我输入docker run hello-world
,然后输入docker version
,这次它按预期工作,没有错误消息。
请注意,当我首先打开“快速启动”终端时,这不起作用。
我在VMWare 10实例中测试Docker,我能够在每种情况下复制此问题及其解决方案(解决方法)。
我希望这会有所帮助。
答案 7 :(得分:2)
我通过简单地删除VirtualBox管理器中的默认VM,重启PC(以防万一),然后重新运行Docker Quickstart终端来解决我的问题。就是这样。
Docker 1.8.2和Virtual Box 5.0.4
答案 8 :(得分:1)
docker run hello-world
你已经完成了。
答案 9 :(得分:1)
删除并删除笔记本电脑上的所有旧v.machines: 1.打开VirtualBox,右键单击“默认”,删除,“删除所有文件”。 2.命令提示符(以管理员身份运行)&gt; docker-machine rm default
卸载Virtualbox,Docker工具箱和Git。 导航到c:\ Users \ Vinita,然后删除dirs。 .docker和.Virtualbox CClean文件和注册表。 重新启动。
予。从Docker Toolbox下载最新版本的Docker工具for Windows(1.10.2) 右键单击下载的文件并“以管理员身份运行” 这将安装 - Docker Quickstart,Kitematic和Virtualbox。
II。从中下载最新的VirtualBox测试版本(5.01.15-105696-win.exe) Testbuilds - Oracle VM VirtualBox。再次以管理员身份运行。
你完成了。这是我们唯一采用的解决办法!
Kitematic和Docker Quickstart现在都可以使用。
第一次右键单击Kitematic并以管理员身份运行。 在Windows 10上测试。
答案 10 :(得分:1)
这听起来像虚拟盒的问题, 在我的情况下,我已执行以下步骤来解决问题
答案 11 :(得分:1)
Docker 1.8.1d遇到了同样的问题,卸载了1.8.1c。通过安装最新的Virtual Box(5.0.18)最终修复了问题,在提示时启动并启动Kitematic。 Kitematic最初失败,并提供删除和重新安装VM的选项。之后我的QuickStart终端没问题。
答案 12 :(得分:0)
我在Windows 10 Home上的Docker Toolbox遇到了同样的问题。解决here中的问题的步骤:
docker-machine ls
以获得列表,您可能应该看到以下内容:NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown
docker-machine upgrade
default
:docker-machine start default
不要担心,如果说:
机器“默认”已经在运行。
docker version
并看到类似的内容了:Client:
Version: 19.03.1
API version: 1.40
Go version: go1.12.7
Git commit: 74b1e89e8a
Built: Wed Jul 31 15:18:18 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:28:45 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
答案 13 :(得分:0)
在非虚拟机上,我遇到了同样的错误。以下步骤对我有用
右键单击docker-> Under Settings-> General,是否在未启用TLS的tcp:// localhost:2375上具有Expose守护程序?如果要按说明访问守护程序,则需要。但是请记住,如警告中所述,此设置不安全。
答案 14 :(得分:0)
如果您使用docker for windows(beta),请按照以下步骤操作:
答案 15 :(得分:0)
只需重新创建默认计算机,然后运行
docker-machine env default
它对我有用。
答案 16 :(得分:0)
我在系统重启后运行 docker images 时遇到了完全相同的错误。我在Windows 7 64位上使用了docker版本1.10与virtualbox 5.0.10和mintty(终端附带Git for Windows)
执行 docker-machine ls 向我显示虚拟机处于超时状态。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default virtualbox Timeout
所以我重新启动了虚拟机
$ docker-machine restart default
然后再次列出状态告诉我证书绑定到了错误的地址:
$ 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)
然后码头工人再次工作!
答案 17 :(得分:0)
在使用VirtualBox 5.0.14的Windows 10上,这种情况已经发生了几次。
这似乎与没有正确关闭VirtualBox有关(我相信) - 例如,停电!
关闭Docker VM
关闭Kitematic
启动Docker快速入门终端
输入终端:
docker-machine.exe -D ls
如果不起作用,请再次尝试1-3,这次尝试重新生成 证书。然后执行第4步。
有一件事很奇怪,就是在终端docker images
中没有列出它们但是说它无法连接到127.0.0.1:2375(但docker-machine ls
显示默认机器在192.168.99.100上运行:2376)
答案 18 :(得分:-2)
我的问题是&#34; ...错误获取IP地址&#34;感谢这里的所有人,他们提供了我所阅读的解决方案并执行了这些步骤:
关闭Docker
打开VirtualBox Manager
删除默认虚拟机
首先启动Kitematic(我认为这很重要)
启动Docker