简体   繁体   English

如何使用Jenkins声明性管道运行特权Docker容器

[英]How to run a privileged Docker container with the Jenkins declarative pipeline

I've been trying for a while to run a privileged container in a Jenkins Declarative Pipeline, but I can't find out the syntax or any examples in the docs. 我一直试图在Jenkins声明管道中运行一个特权容器,但我无法找到文档中的语法或任何示例。 What I have so far, with a un-privileged container: 到目前为止,我拥有一个没有特权的容器:

pipeline {
    agent none
    stages {
        stage("Build") {
            agent {
                docker { image "hello-world" }
            }
        }
    }
}

It seems like a common use-case, I can't believe nobody ran into it already :( 这似乎是一个常见的用例,我不敢相信没有人遇到它:(

Please refer the example below: 请参考以下示例:

 stage('Update dependencies version') {
        agent {
            docker {
                image 'maven'
                args '--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m'
            }
        }

        when {
            not {
                branch 'master'
            }
        }

        steps {
            script {
                ....
            }
        }
    }

Or at the top level: 或者在顶层:

 pipeline {
        agent {
            docker {
                image 'maven'
                args '--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m'
            }
        }
        stages {
            stage('Build') {
                steps {
                    script {
                        maven.cleanPackage()
                    }
                }
            }
        }
    }

Or inside script under stage: 或者在舞台下的内部脚本:

        stage('Build') {
        agent {
            label 'jenkins-slave-swat-prod-01'
        }

        steps {
            script {
                docker.image('mysql:latest').withRun('-e "MYSQL_ROOT_PASSWORD=password" -e "MYSQL_DATABASE=scheduler" -p 3306:3306') { c ->
                    docker.image('maven').inside("--privileged -v $HOME/.m2:/home/jenkins/.m2 -ti -u 496 -e MAVEN_CONFIG=/home/jenkins/.m2 -e MAVEN_OPTS=-Xmx2048m --link ${c.id}:localhost") {
                        maven.cleanPackage()
                    }
                }
            }
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Jenkins声明式管道中将x11转发到Docker容器 - How to forward x11 to Docker container in Jenkins declarative pipeline 使用声明性Jenkins管道在Docker中运行命令 - Run command in Docker with declarative Jenkins Pipeline 声明式 Jenkins 管道和 Docker - Declarative Jenkins pipeline and Docker Jenkins 无法在具有特定运行 arguments 的声明性管道中启动 docker 代理容器 - Jenkins cannot start a docker agent container in declarative pipeline with specific run arguments 如何运行特权 Docker 容器以使用 systemctl - How to run privileged Docker container for using systemctl 将配置文件从 Dockerfile 插入到声明性 Jenkins 管道 Docker 容器中 - Insert a config file into a declarative Jenkins pipeline Docker container from Dockerfile 无法通过Jenkins声明性管道更改Docker容器内的目录 - Unable to change a directory inside a Docker container through a Jenkins declarative pipeline Jenkins声明性管道:如何在docker容器中挂载与工作空间关联的临时卷? - Jenkins Declarative Pipeline: How can I mount a temporary volume associated with the workspace in a docker container? Docker 容器中的 Jenkins(运行 docker 管道) - Jenkins in Docker container (run docker pipeline) Jenkins 声明性 docker 管道与 angular - Jenkins declarative docker Pipeline with angular
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM