docker - 如何在 Jenkins Pipeline 上构建 Docker 映像,而不更改底层 Jenkins VM 的权限?
问题描述
我想使用 Jenkins Pipeline 来构建、推送和部署我的 Docker 映像。
我明白了:
Got permission denied while trying to connect to the
Docker daemon socket at unix:///var/run/docker.sock
StackOverflow 上的其他问题建议sudo usermod -a -G docker jenkins
,然后重新启动 Jenkins,但我无法访问运行 Jenkins 的机器——无论如何,围绕 Docker 构建的 Jenkins Pipeline 无法运行基本的 Docker 命令似乎很奇怪。
如何构建我的 Docker?
pipeline {
agent any
stages {
stage('deploy') {
agent {
docker {
image 'google/cloud-sdk:latest'
args '-v /var/run/docker.sock:/var/run/docker.sock'
}
}
steps {
script {
docker.build "gcr.io/myporject/mydockerimage:1"
}
}
}
}
}
解决方案
显示的管道定义正在尝试在 docker 容器 (google/cloud-sdk:latest) 内执行 docker 构建。相反,您应该执行以下操作,因为主机上的 jenkins 用户有权在主机上执行 docker 命令。
pipeline {
agent any
stages {
stage('deploy') {
steps {
script {
docker.build "gcr.io/myporject/mydockerimage:1"
}
}
}
}
}
jenkins 在机器上单独安装和配置时,在没有适当权限的情况下无法执行 docker 命令,这并不奇怪。
推荐阅读
- performance - 在我的统一游戏中找不到性能问题
- macos - 如何设置 Iterm/vim 使 vim 可以识别 alt 键映射?
- kotlin - Retrofit 在不可为空的字符串上返回 null (Kotlin)
- java - 如何使用我的应用程序扫描手机显示屏上的二维码?
- javascript - 我正在尝试将数据加载到表中,但它不会删除旧的东西
- python - 使用 python 抓取网页期间 HTML 类的问题
- r - R; 数据框中的最大和最小天数
- matlab - 为什么 NMI 值小而聚类精度和 Rand 指数较高
- java - Java JComboBox 接受 ArrayList 但不显示 ArrayList 的项目
- arrays - 将列表的多变量离散列表转换为散点图