我在Docker容器中运行Jenkins,Jenkins尝试运行我的maven构建。作为构建的一部分,docker maven插件指示它构建一个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构建一直运行,直到它尝试构建映像,此时出现以下错误消息:
[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 .
,它会构建没有问题的图像。
为什么maven构建失败?对localhost有什么要求:80?我怎样才能纠正这个问题,以便maven可以建立我的形象?
注意:我已将docker socket和binary安装在此容器中
答案 0 :(得分:3)
如上所述Rajith Delantha,这解决了我的问题:
直接在DOCKER_OPTS=' -G jenkins'
添加/etc/default/docker
。
然后按sudo service docker restart
重启泊坞服务。
答案 1 :(得分:2)
这可以通过在Jenkins中添加DOCKER_HOST
环境变量来解决。
像这样设置你的docker守护进程:
[/etc/sysconfig/docker]
OPTIONS="-H tcp://127.0.0.1:4243"
Jenkins Jobs(注入环境变量):
DOCKER_HOST=tcp://127.0.0.1:4243
答案 2 :(得分:1)
我遇到了同样的问题,但是在我的本地机器上。
我在Github线程中阅读此评论后得到了它:https://github.com/docker/compose/issues/1214#issuecomment-256774629
它说:
解决方案(来自 https://docs.docker.com/engine/installation/linux/debian/,不是 只适用于Debian):
添加泊坞组(如果它尚未存在)。
sudo groupadd docker
添加已关联的用户&#34; $ {USER}&#34;到码头工人组。更改用户 名称以匹配您的首选用户。您可能必须注销并重新登录 再次让这个生效。
sudo gpasswd -a ${USER} docker
重新启动Docker守护程序。
sudo service docker restart
答案 3 :(得分:0)
我能够通过结合两个赞成的答案的元素来解决问题。
设置选项以使用/etc/default/docker
中的其他端口。
DOCKER_OPTS="-H tcp://127.0.0.1:4243"
重新启动Docker守护程序。
sudo service docker restart
然后构建你的包。
export DOCKER_HOST=tcp://127.0.0.1:4243
mvn clean package docker:build
答案 4 :(得分:0)
我在竹子代理人处遇到了这个问题,但我认为jenkins也是如此。
将运行maven的用户添加到docker组。然后重启docker和运行maven的服务。服务运行时不会加载组更改。所以在我的情况下:
sudo groupadd docker # if it does not exist
sudo usermod -a -G docker bamboo-user
sudo systemctl restart docker.service
sudo systemctl restart bamboo-agent.service
答案 5 :(得分:0)
在确保docker ps
可以从运行mvn
的同一用户那里工作之后,我仍然遇到相同的问题。
由于图片名称中包含特殊字符,因此看起来像个错误。我通过从Docker映像名称中删除破折号(-)(或任何特殊字符)来解决它。
尝试将存储库设置为不同的名称并进行检查。
<configuration>
<repository>somename</repository>
</configuration>
答案 6 :(得分:0)
当我没有运行docker守护程序时,我遇到了类似的问题-重新启动Docker工具箱,现在看起来更加快乐