docker-maven插件尝试构build图像时发生了什么?

我正在docker容器中运行Jenkins,Jenkins试图运行我的Maven构build。 作为构build的一部分,docker maven插件指示它构build一个docker镜像。

POM的那部分在下面。

<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.3.8</version> <configuration> <imageName>example</imageName> <baseImage>java:latest</baseImage> <skipDockerBuild>false</skipDockerBuild> <cmd>["java", "-jar", "myLogThread-jar-with-dependencies.jar"]</cmd> <resources> <resource> <directory>target/</directory> <include>config.properties</include> </resource> <resource> <directory>${project.build.directory}</directory> <include>myLogThread-jar-with-dependencies.jar</include> </resource> </resources> </configuration> </plugin> 

maven构build运行,直到它试图build立图像,在这一点下面的错误消息吐出:

 [INFO] Building image example [INFO] I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied 

我可以进入正确的目录和Dockerfile在那里。

我也可以运行sudo docker build . 它会build立没有问题的形象。

为什么Maven构build失败? 对localhost有什么要求:80? 我怎样才能纠正这个问题,让maven可以build立我的形象?

注意:我在这个容器中安装了docker socket和binary

这可以通过在Jenkins中添加DOCKER_HOST环境variables来解决。

像这样设置你的docker守护进程:

 [/etc/sysconfig/docker] OPTIONS="-H tcp://127.0.0.1:4243" 

Jenkins Jobs(注入环境variables):

 DOCKER_HOST=tcp://127.0.0.1:4243 

正如Rajith Delantha所述,这为我解决了这个问题:

直接在/etc/default/docker DOCKER_OPTS=' -G jenkins'添加: DOCKER_OPTS=' -G jenkins'

然后通过sudo service docker restart启动docker服务。

我有同样的问题,但在我的本地机器。

我读了这个评论后,在Github线程: https : //github.com/docker/compose/issues/1214#issuecomment-256774629

它说:

解决scheme(来自https://docs.docker.com/engine/installation/linux/debian/ ,不仅适用于Debian):

如果docker组不存在,则添加docker组。

sudo groupadd docker

将连接的用户“$ {USER}”添加到泊坞窗组中。 更改用户名称以匹配您的首选用户。 您可能必须注销并重新login才能生效。

sudo gpasswd -a ${USER} docker

重新启动Docker守护进程。

sudo service docker restart