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

kev*_*vin 17 permissions plugins maven jenkins docker

我在一个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>
Run Code Online (Sandbox Code Playgroud)

maven构建一直运行,直到它尝试构建映像,此时出现以下错误消息:

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

我可以进入正确的目录,Dockerfile就在那里.

我也可以运行sudo docker build .,它将构建没有问题的图像.

为什么maven构建失败?对localhost有什么要求:80?我如何纠正这个,以便maven可以建立我的形象?

注意:我已将docker socket和binary安装在此容器中

小智 2

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

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

[/etc/sysconfig/docker]
OPTIONS="-H tcp://127.0.0.1:4243"
Run Code Online (Sandbox Code Playgroud)

Jenkins Jobs(注入环境变量):

DOCKER_HOST=tcp://127.0.0.1:4243
Run Code Online (Sandbox Code Playgroud)