运行Jenkins管道时找不到sudo/docker



我让Jenkins在aws ec2实例的docker内部运行。我正在使用以下命令来启动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

以下是我的JenkinsFile:

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权限",那么我开始获得以下docker not found

/var/jenkins_home/workspacetest@tmp/耐用-12345/script.sh:1:/var/jenkins_home/workspacetest@tmp/durable-12345/script.sh:docker:未找到

感谢您的帮助。

您不需要在第一步中更改权限
这样您就可以删除第一阶段的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论坛上的信息。

在Docker中,不建议使用"sudo";。如果你能够运行docker,那么你可以很容易地成为root用户。在执行Jenkins操作时,您已经在使用--privileged,它应该以更高的权限运行此命令。

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

最新更新