如何在基于dockerfile的容器中运行Jenkins管道?

如何在基于dockerfile的容器中运行Jenkins管道?,docker,jenkins,jenkins-pipeline,jenkins-plugins,Docker,Jenkins,Jenkins Pipeline,Jenkins Plugins,我正试图基于存储在SCM中的dockerfile在容器中运行管道 下面是我的管道的开始部分: pipeline { agent { dockerfile { dir '002_CICD' } } .... 当我尝试运行管道时,出现以下错误: + docker build -t 66dae53280bc29614c69b505e48424c25e689b91 -f 002_CICD/Dockerfile 002_C

我正试图基于存储在SCM中的dockerfile在容器中运行管道

下面是我的管道的开始部分:

pipeline {
    agent { 
        dockerfile {
            dir '002_CICD'
        }

    }
....
当我尝试运行管道时,出现以下错误:

   + docker build -t 66dae53280bc29614c69b505e48424c25e689b91 -f 002_CICD/Dockerfile 002_CICD
/var/jenkins_home/workspace/AMP_app_docker_pipe@tmp/durable-cbf3977b/script.sh: 1:
 /var/jenkins_home/workspace/AMP_app_docker_pipe@tmp/durable-cbf3977b/script.sh: docker: not found
为了运行docker容器,我安装了以下Jenkins插件:

  • Docker插件
  • docker buil台阶
  • Docker管道
  • Docker公共插件
  • DockerAPI插件
  • 我还在远程服务器上启用了docker API,连接看起来很好

    我错过了什么?
    非常感谢

    您试图实现的是docker设置中的docker(非常适用于CI流程)

    由于jenkins在容器中运行,您需要在Dockerfile中安装docker(cli/客户端),因此未找到docker错误

    此docker客户端将使用主机的docker引擎执行所有操作

    关于这个错误

    无法连接到位于的Docker守护程序unix:///var/run/docker.sock


    如果jenkins用户没有访问主机/var/run/docker.sock的权限,就会发生这种情况。检查此文件在主机上的权限以及运行jenkins的用户的相关权限

    检查运行jenkins master/worker的用户是什么。我猜此用户可能没有访问
    docker
    客户端的权限,您可能需要将此用户添加到
    docker
    组。您正在尝试docker-in-docker方法?。从外观上看,您已经安装了docker,从机正在使用docker文件作为参考,并且一旦从机启动,您正在尝试在容器内执行docker?我说的对吗?谢谢Szymon Stepniak和error404。也许我正在尝试做的更多颜色可以澄清这个问题。我正在远程机器上的容器中运行jenkins服务器(注意,我在同一个容器中没有docker)。我启用了此远程机器的docker API,如果我理解正确,我可以使用docker API执行docker指令(如执行管道中的dockerfile代理)@错误404:是的,我正在尝试docker-in-docker方法,但当我尝试构建第一个容器时,问题就出现了。@LucaFiorentino是的。。但是为了使用docker API,您需要安装docker客户端而不是docker引擎!docker客户端将使用主机的docker api,即主机docker引擎执行所有操作@错误404:谢谢。问题确实出在码头工人的缺席。我认为CLI是由以前的一个插件安装的。一旦安装了CLI,我就转移到了另一个bug(Jenkins似乎是在容器内而不是主机上查找守护程序=>无法连接到当前的Docker守护程序)unix:///var/run/docker.sock. docker守护进程正在运行吗?)但至少我前进了一步。非常感谢。