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