docker-maven插件尝试构建映像时会发生什么?

问题描述 投票:17回答:8

我正在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套接字和二进制文件

maven plugins jenkins permissions docker
8个回答
3
投票

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

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

然后按sudo service docker restart重新启动Docker服务。


2
投票

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

像这样设置您的泊坞窗守护程序:

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

Jenkins Jobs(注入环境变量):

DOCKER_HOST=tcp://127.0.0.1:4243

1
投票

我有同样的问题,但在我的本地计算机上。

我在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


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

0
投票

我在竹代理公司遇到了这个问题,但我认为詹金斯也是如此。

将正在运行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

0
投票

确保docker ps在运行mvn的同一用户中正常工作,但我仍然遇到相同的问题。由于图片名称中包含特殊字符,因此看起来像个错误。我通过从Docker映像名称中删除破折号(-)(或任何特殊字符)来解决它。

尝试将存储库设置为不同的名称并进行检查。

            <configuration>
                <repository>somename</repository>                    
            </configuration>

0
投票

[当我没有运行docker守护程序时,我遇到了类似的问题-重新启动Docker工具箱,现在看起来更快乐了


0
投票

我和詹金斯有同样的问题。

将詹金斯添加到码头工人组

sudo usermod -aG docker jenkins

然后是restrat jenkins。

© www.soinside.com 2019 - 2024. All rights reserved.