我正在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发出什么请求?我该如何纠正这个问题,以便行家可以建立我的形象?
注意:我已经在此容器中安装了Docker套接字和二进制文件
如上所述,Rajith Delantha曾为我解决了这个问题:
直接在DOCKER_OPTS=' -G jenkins'
中添加/etc/default/docker
。
然后按sudo service docker restart
重新启动Docker服务。
这可以通过在Jenkins中添加DOCKER_HOST
环境变量来解决。
像这样设置您的泊坞窗守护程序:
[/etc/sysconfig/docker]
OPTIONS="-H tcp://127.0.0.1:4243"
Jenkins Jobs(注入环境变量):
DOCKER_HOST=tcp://127.0.0.1:4243
我有同样的问题,但在我的本地计算机上。
我在Github线程中阅读此评论后就知道了:https://github.com/docker/compose/issues/1214#issuecomment-256774629
它说:
解决方案(来自https://docs.docker.com/engine/installation/linux/debian/,不仅适用于Debian):
如果尚不存在,请添加Docker组。
sudo groupadd docker
将连接的用户“ $ {USER}”添加到泊坞窗组。变更使用者名称以匹配您的首选用户。您可能必须注销并重新登录再次生效。
sudo gpasswd -a ${USER} docker
重新启动Docker守护程序。
sudo service docker restart
我能够通过合并两个已投票答案的元素来解决问题。
设置选项以使用/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
我在竹代理公司遇到了这个问题,但我认为詹金斯也是如此。
将正在运行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
确保docker ps
在运行mvn
的同一用户中正常工作,但我仍然遇到相同的问题。由于图片名称中包含特殊字符,因此看起来像个错误。我通过从Docker映像名称中删除破折号(-)(或任何特殊字符)来解决它。
尝试将存储库设置为不同的名称并进行检查。
<configuration>
<repository>somename</repository>
</configuration>
[当我没有运行docker守护程序时,我遇到了类似的问题-重新启动Docker工具箱,现在看起来更快乐了
我和詹金斯有同样的问题。
将詹金斯添加到码头工人组
sudo usermod -aG docker jenkins
然后是restrat jenkins。