docker - 为什么我的 docker build 在 jenkins 代理上失败?
问题描述
这是我Jenkinsfile
在项目中的管道
pipeline {
agent {
docker {
image 'docker:dind'
args '-u root:root -p 3000:3000 --privileged'
}
}
environment {
CI = 'true'
}
stages {
stage('docker build') {
when {
branch 'master'
}
steps {
sh 'docker build --label v1.0.0 -t myrepo/myapp:v1.0.0'
}
}
}
}
我分别有一个詹金斯主代理和从代理。上述管道在主节点上运行良好,但如果在从代理节点上运行,则会遇到以下错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
我很确定 docker 正在代理节点上运行,因为我可以 ssh 到它并成功运行 docker 命令。
为什么它在主代理和从代理上运行时表现不同?我应该如何解决它?非常感谢!
解决方案
我不知道为什么,但我通过以下更改修复了它:附加-v /var/run/docker.sock:/var/run/docker.sock
到 args。
pipeline {
agent {
docker {
image 'docker:dind'
args '-u root:root -p 3000:3000 --privileged -v /var/run/docker.sock:/var/run/docker.sock'
}
}
environment {
CI = 'true'
}
stages {
stage('docker build') {
when {
branch 'master'
}
steps {
sh 'docker build --label v1.0.0 -t myrepo/myapp:v1.0.0'
}
}
}
}
推荐阅读
- python - 如何以毫秒为单位使用 time.sleep() 和变量?
- flutter - 如何更新代码并删除最后一个 SingleTickerProviderStateMixin
- graphql - 服务工作者,缓存图形查询请求
- reactjs - React 错误“无法在未安装的组件上执行 React 状态更新。这是一个无操作,但它表示内存泄漏”
- php - SugarCRM:自定义逻辑挂钩
- reactjs - 如何在不同的组件上使用相同的 handleChange 事件
- javascript - NodeJS with MySQL - 从数组中向 SQL 插入多行的最佳方法
- python - python lxml添加/修改/替换html元素的innerHTML
- typescript - TypeScript / Vue 3:注入变异函数会导致 TypeScript 错误“对象属于‘未知’类型”
- java - java.nio.file.FileSystemException 进程无法访问该文件,因为它正被另一个进程使用