docker - 如何使用 Jenkins 声明式管道运行特权 Docker 容器
问题描述
我一直在尝试在 Jenkins 声明式管道中运行特权容器,但我在文档中找不到语法或任何示例。到目前为止,我拥有一个非特权容器:
pipeline {
agent none
stages {
stage("Build") {
agent {
docker { image "hello-world" }
}
}
}
}
这似乎是一个常见的用例,我不敢相信已经没有人遇到过它:(
解决方案
请参考以下示例:
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 {
....
}
}
}
或在顶层:
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()
}
}
}
}
}
或在舞台下的脚本内:
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()
}
}
}
}
}
推荐阅读
- java - 如何在 Java 中解析 xml 时修复 JAXB 错误?
- javascript - React - 存储为变量的组件未在嵌套组件中呈现
- reactjs - 如何在本地为 axios get 方法连接我的 XML 文件
- sql-server - 使用 FOR JSON AUTO 语法时删除空 json 对象
- javascript - 我如何从一个字符到 javascript 中的 UTF 16 等价物
- javascript - 如何通过使用另一个变量命名来设置变量
- windows - powershell无法点击点击按钮
- matlab - 在从图像中提取 Zernike 矩之前如何进行图像坐标归一化?
- react-native - ReactNative 中的 Mobx 安装失败
- python - Discord.py bot 在添加反应时将消息重新发送到另一个频道中断