Windows上的DOCKER_HOST环境变量

20

我在Windows 10机器上运行Docker 1.12.0。我正在使用Maven 3.3.9作为依赖管理器开发Java程序。我有一个maven docker插件(https://github.com/fabric8io/docker-maven-plugin),在Clean Install时出现以下错误。

[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.15.16:build (docker-build-start) on project integration-test: Execution docker-build-start of goal io.fabric8:docker-maven-plugin:0.15.16:build failed: No <dockerHost><machine>给定,也没有DOCKER_HOST环境变量,也没有可读/可写的'/var/run/docker.sock' -> [Help 1]

当我在POM文件中使用以下配置选项运行clean install:

<dockerHost>tcp://0.0.0.0:2376</dockerHost>

显示以下结果。

[ERROR]在项目integration-test上执行io.fabric8:docker-maven-plugin:0.15.16:build(docker-build-start)目标时发生错误:无法创建Docker访问对象:无法从服务器https://0.0.0.0:2376提取API版本:连接到0.0.0.0:2376[/0.0.0.0]失败:拒绝连接:connect -> [Help 1]

我的问题是:是否有一个IP地址可以告诉这个Maven插件它可以在哪里找到守护进程?正常的Docker命令完全正常。该插件在OS X上也没有任何问题。


正常的Docker命令完全可以正常工作。那么变量设置为什么呢? - BMitch
没有定义任何变量,只是运行了安装程序,并将Docker添加到路径变量中。我可以安装容器并运行它们,我可以列出网络、列出容器等等。只有Maven插件在报告这个变量的问题。 - user2969329
请参见 https://github.com/fabric8io/shootout-docker-maven/issues/1 - Vadzim
7个回答

15

在经过近一天的无果谷歌搜索后,我自己找到了这个解决方案。虽然平凡,但仍可能帮助其他人。

暴露Docker守护程序

您需要在“设置”->“常规”下启用“暴露守护程序”复选框


这应该是被接受的答案! - Mike

12

似乎运行Maven目标的用户没有访问 docker.sock 的权限。错误消息正在告诉哪些选项可以解决问题。

没有给出 <dockerHost><machine>,也没有 DOCKER_HOST 环境变量,并且没有可读/可写的 '/var/run/docker.sock'

最后一个选项是最简单的,因为它只需要文件权限,而不需要创建任何 Docker 机器或设置 DOCKER_HOST,在 Linux 上,您可以使用以下命令更改 docker.sock 的读/写权限:

sudo chmod 776 /var/run/docker.sock

在Windows上,请参考该文章:Microsoft 文章


11

在 Windows 10 家庭版上,有效的 <dockerHost>http://127.0.0.1:2375</dockerHost> 无法在专业版上运行。 - vimal krishna
也许这个链接可以帮助你:https://stackoverflow.com/questions/44226315/failed-to-execute-fabric8-docker-plugin/46598043#46598043 - vimal krishna
1
@friism 这里应该是 tcp 而不是 http,对吧? - Yassin Hajaj

2

如果有人只想跳过 fabric8 docker-maven-plugin 的执行,以避免构建失败并出现以下错误:

没有给定 DOCKER_HOST 环境变量,也没有可读/可写的 '/var/run/docker.sock' 或 '//./pipe/docker_engine',也没有配置外部提供程序,如 Docker machine。

那么可以通过 -Ddocker.skip=true 来实现此目的,具体请参考 https://dmp.fabric8.io/#global-configuration


5
如果整个重点是使用Docker构建,那么设置docker.skip并不能解决问题! - Peter Davis
@PeterDavis,正如上面明确指出的那样,本答案仅适用于那些想要修复构建但根本不需要Docker的人。 - Vadzim

1

当我尝试在自定义的GitLab CI/CD运行器中构建项目时,遇到了与root用户不同的用户在自定义构建镜像中定义的相同问题。我通过设置用户对docker-socket的读写权限来解决这个问题。

chmod o+rw /var/run/docker.sock

0

如果您正在使用Eclipse中的Window和Maven构建Java项目,但仍然看到该错误,则必须执行以下步骤:

步骤1:

您需要在“设置” ->“常规”下启用“Expose daemon on...”复选框,如@Adriaan Koster所述

如果步骤1无法解决问题,则

步骤2:以管理员模式运行Eclipse。现在它应该可以正常工作。


-2
如果您正在使用工具箱,请使用docker-machine。
            <machine>
                <name>default</name>
                <autoCreate>true</autoCreate>
                <createOptions>
                    <driver>virtualbox</driver>
                    <virtualbox-cpu-count>2</virtualbox-cpu-count>
                </createOptions>
            </machine>

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