当前位置: 首页 > 知识库问答 >
问题:

在Gitlab CI中运行Maven jib插件时无法连接到docker守护程序

孟英叡
2023-03-14

我试图使用jib Maven插件在Gitlab continuous integration中使用我的应用程序构建docker映像,但我无法使用dind(docker in docker)服务将插件连接到docker守护程序。目前我正在gitlab ci中使用此配置。yml文件:

deploy:mvn:
  image: maven:3.6.3-jdk-8-openj9
  stage: deploy
  services:
    - docker:dind
  script:
    - mvn compile jib:dockerBuild

这就是我得到的错误:

[错误]无法执行目标com.google.云工具:jib maven插件:0.9.11:project my application:Build to Docker daemon上的dockerBuild(默认cli)失败,也许您应该确保安装了Docker,并且您有正确的权限运行它-

使现代化

我更新到2.2.0,它在本地运行。我之前添加了docker image命令,插件似乎无法在Gitlab CI中找到docker命令:

$docker图片

这是jib插件的配置:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.2.0</version>
    <configuration>
        <from>
            <image>adoptopenjdk/openjdk11:alpine-jre</image>
        </from>
        <to>
            <image>my-application:latest</image>
        </to>
        <container>
            <entrypoint>
                <shell>sh</shell>
                <option>-c</option>
                <arg>chmod +x /entrypoint.sh &amp;&amp; sync &amp;&amp; /entrypoint.sh</arg>
            </entrypoint>
            <ports>
                <port>8080</port>
            </ports>
            <environment>
                <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED>
                <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP>
            </environment>
            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
        </container>
    </configuration>
</plugin>

共有2个答案

年健
2023-03-14

最后,这是我使用的配置:

services:
    - docker:dind


deploy:mvn:
    image: maven:3.6.3-jdk-8-openj9
    stage: deploy
    script:
        - export DOCKER_HOST=tcp://docker:2375
        - mvn compile jib:build -Djib.to.auth.username=$DOCKER_REGISTRY_USER -Djib.to.auth.password=$DOCKER_REGISTRY_PWD
    only:
        - tags

除了在Docker服务中使用Docker,我还需要建立Docker_主机环境变量,并将凭据传递给我的mvn jib:build命令。我将凭据作为环境变量存储在CI设置中。谢谢@Chanseok Oh对你的帮助。

另见:

  • 使用docker build
扶绍辉
2023-03-14

该插件似乎无法在Gitlab CI中找到docker命令:

不,找不到docker命令的不是Jib而是/bin/bash。即使在使用Jib之前,也没有可用的docker。仔细查看错误消息。

$ docker images && mvn compile jib:dockerBuild /bin/bash: line 97: docker: command not found

例如,在我的Linux,如果我尝试外壳脚本中不存在的命令foo,它会输出相同的消息。

$ /bin/bash -c "foo && mvn -v"
/bin/bash: line 1: foo: command not found

因此,以下不带mvn的命令将失败,并出现相同的错误。

script:
  - docker images

这证明,docker在GitLab运行时环境中不存在,或者不在PATH环境变量中。

使现代化

更新我的答案,因为您回答说您现在使用jib: build而不是jib: dockerBuild

如果您使用jib: build,您甚至不需要Docker。使用jib: build构建映像并将映像推送到远程注册表时,Jib不需要Docker。因此,您可以完全忘记设置Docker并删除docker: dind导出DOCKER_HOST

mvn编译jib:build-Djib。到啊。用户名=$DOCKER\u REGISTRY\u USER-Djib。到啊。密码=$DOCKER\u REGISTRY\u PWD

 类似资料:
  • 问题内容: 我创建了一个Dockerfile在Docker内部运行Docker: 启动容器并运行docker ps后,我得到:“无法通过unix:///var/run/docker.sock连接到Docker守护程序。Docker守护程序正在运行吗?” 我在容器内执行了命令dockerd: 错误启动守护程序:错误初始化网络控制器:错误获取控制器实例:无法创建NAT链DOCKER:iptables失

  • 我创建了一个Dockerfile来在Docker中运行Docker: 启动容器并运行docker ps后,我得到:“无法连接到unix:///var/run/docker.sock.docker守护程序是否正在运行?" 我在容器中执行了命令dockerd,结果是: 启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:未能创建NAT链DOCKER:iptables失败:iptables

  • 我的Docker服务已启动并运行。但是,当尝试使用Docker时,请使用,例如: 我有以下错误: 注意,我已经在Mac OS X上找到了答案,sudo docker无法连接到docker守护进程。docker守护进程是否在此主机上运行? 如下: docker机器启动默认值 docker ps 那么还需要做些什么呢? 这是: 在El Capitan的

  • 问题内容: 我已经在ubuntu 14.04上安装了docker,它告诉我安装成功。然后我进入,它返回了 我进入了 我尝试了和,得到了相同的答复: 我不知道为什么它返回了这个,我尝试使用来拉ubuntu 并得到了 请告诉我如何解决此问题,如何拉出并运行docker image。和是一样的吗? 问题答案: 您需要将当前用户添加到组中,如下所示: 另外,您可以使用以下环境变量: 然后重新启动系统。正如

  • 我正在运行安装了以下docker软件的Ubuntu:

  • 问题内容: 我在CentOS机器上运行Jenkins和Docker。我有一个詹金斯(Jenkins)工作,可以拉出Github存储库并构建Docker映像。当我尝试运行作业时,出现错误: 即使我通过将jenkins添加到我的docker用户组并重新启动计算机,也会发生这种情况。我该如何解决? 顺便说一句,如果尝试将命令更改为我只是得到错误 问题答案: 在安装了Jenkins和Docker之后。将j