sudo/docker 在 运行 Jenkins 管道时未找到

sudo/docker not found while running the Jenkins pipeline

我在 aws ec2 实例的 docker 中安装了 Jenkins 运行ning。我正在使用以下命令启动 Jenkins:

sudo docker run --privileged --name jenkins-master -p 80:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts

以下是我的 Jenkins 文件:

pipeline {
    agent none
    stages {
        stage("Docker Permissions") {
        agent any
            steps {
                sh "sudo chmod 666 /var/run/docker.sock"
            }
        }
        stage('Build') {
            agent {
                docker {
                    image 'maven:3-alpine'
                    args '-v $HOME/.m2:/root/.m2'
                }
            }
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('Build') {
        agent none
            steps {
                script {
                    image = docker.build("image11")
                    println "Newly generated image: " + image.id
                }
            }
        }
    }
}

在 Jenkins 作业日志中,当我 运行 作业时,我得到 sudo not found。如果我删除第一阶段 'Docker Permissions' 然后我开始关注 docker not found.

/var/jenkins_home/workspace test@tmp/durable-12345/script.sh: 1: /var/jenkins_home/workspace test@tmp/durable-12345/script.sh: docker: not found

感谢任何帮助。

在Docker中不推荐使用“sudo”。如果你能够 运行 docker 那么你可以很容易地成为 root。在启动 Jenkins 时,你已经在使用 --privileged,这应该 运行 这个命令具有更高的权限。

尝试从命令中删除 sudo 和 运行。

您不需要在第一步中更改权限。
所以你可以删除你的第一阶段 Docker Permissions.

运行 你的容器是这样的:

sudo docker run --name jenkins-master -p 80:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d jenkins/jenkins:lts
  • 您可以删除 --privileged 标志
  • 您需要与容器共享 docker 主机:
    -v /var/run/docker.sock:/var/run/docker.sock
  • 您还需要共享容器的 docker 路径:
    -v $(which docker):/usr/bin/docker

查看有关 docker forum 的信息。