Docker提示:无法连接目标机器,因为其主动拒绝了连接。

24

我每天都使用Docker,但今天出现了一个问题,而没有改变任何东西。我打开了Docker终端并尝试启动我的一个容器。但它给出了这个错误:“无法建立连接,因为目标计算机积极拒绝”。我正在使用Windows 10。

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com


admin@samsung MINGW64 ~
$ docker ps
An error occurred trying to connect: Get http://127.0.0.1:2375/v1.22/containers/json: dial tcp 127.0.0.1:2375: connectex: No connection could be made because the target machine actively refused it.

admin@samsung MINGW64 ~
$ docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 22:37:33 2016
 OS/Arch:      windows/amd64
An error occurred trying to connect: Get http://127.0.0.1:2375/v1.22/version: dial tcp 127.0.0.1:2375: connectex: No connection could be made because the target machine actively refused it.
9个回答

39
  1. 在你的电脑上右键点击
  2. 属性
  3. 高级系统设置
  4. 环境变量
  5. 新增变量:DOCKER_HOST
    值:tcp://127.0.0.1:2375
  6. 运行 Docker Desktop
  7. 在右下角,右键单击 Docker-Desktop
  8. 设置
  9. 启用以下选项:"在未使用 TLS 的情况下将守护程序暴露在 tcp://localhost:2375 上"

2
是的,这是唯一对我起作用的解决方案。无论是否“暴露守护程序”,这只是我在Windows端需要的环境变量(已在WSL下设置)。 - mpen
3
超棒的解决方案。对我来说,“Expose daemon...”复选框必须被选中,否则$ docker container list -a会输出error during connect: Get "http://127.0.0.1:2375/v1.24/containers/json?all=1": dial tcp 127.0.0.1:2375: connectex: No connection could be made because the target machine actively refused it. - s3c
我没有安装Docker桌面版,我只是想构建项目,不知道为什么它需要建立TCP连接。 - Philip Rego
我在做完所有这些之后不得不重新启动我的电脑。 - rupweb

10

我通过打开Oracle VM VirtualBox Manager(可以在开始菜单中搜索),停止虚拟机(在我的情况下是default),然后再次运行Docker Quickstart Terminal来解决了这个问题。

另外,请参考这个答案。


我没有VirtualBox或Docker Toolbox,只有DockerCLI。 - Philip Rego

3
"Actively refused it"的意思是当您尝试连接时,主机发送了一个复位而不是确认。因此,这不是您代码中的问题。可能是防火墙阻止了连接或者承载服务的进程没有在该端口上进行监听。这可能是因为它根本没有运行或者它正在侦听不同的端口。
一旦您启动承载服务的进程,请尝试使用netstat -anb命令(需要管理员权限)来验证它是否正在运行并且正在监听所期望的端口。

3

我也遇到了同样的问题,甚至尝试通过停止然后重新启动默认机器来解决。

解决方案:最终,我重新启动了我的系统,然后打开了新的Docker快速启动终端。之后我再次运行“docker run hello-world”,然后它成功连接并从library/hello-world拉取了hello-world。


我没有默认的机器,只想构建而不运行。 - Philip Rego

2

对我来说,这是由于连接到VPN引起的。

断开VPN以允许连接到本地VirtualBox / Docker实例。


1

对我来说,这是一个代理设置问题, 进入网络和互联网 > 代理 启用“自动检测设置”


0
尝试使用
minikube docker-env
如果minikube是您的目标机器,可能会用到它。

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

0

minikube start 对我来说解决了这个问题


0
通过PowerShell修复了Docker桌面版的这个bug,尽管我启动了Docker桌面版,但我的内部进程却以不同的名称停止了。
Status   Name               DisplayName
------   ----               -----------
Stopped  com.docker.service Docker Desktop Service

所以我开始了它
Start-Service -Name "Docker Desktop Service" 

在PowerShell中,它帮助解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接