jenkins - 使用 Docker 代理 args 的变量时无法指定标志?
问题描述
我正在尝试使用 Jenkins 管道为我的 Docker 代理安装一个卷。以下是我的 JenkinsFile:
pipeline {
agent none
environment {
DOCKER_ARGS = '-v /tmp/my-cache:/home/my-cache'
}
stages {
stage('Build') {
agent {
docker {
image 'my-image:latest'
args '$DOCKER_ARGS'
}
}
steps {
sh 'ls -la /home'
}
}
}
}
遗憾的是它无法运行,从 pipeline.log 文件中可以看到以下内容。
java.io.IOException: Failed to run image 'my-image:latest'. Error: docker: Error response from daemon: create /tmp/my-cache: " /tmp/my-cache" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
但是,以下 JenkinsFile确实有效:
pipeline {
agent none
environment {
DOCKER_ARGS = '/tmp/my-cache:/home/my-cache'
}
stages {
stage('Build') {
agent {
docker {
image 'my-image:latest'
args '-v $DOCKER_ARGS'
}
}
steps {
sh 'ls -la /home'
}
}
}
}
唯一的区别是-v
标志是在环境变量之外硬编码的。
我是 Jenkins 的新手,所以我一直在努力寻找有关这种行为的任何文档。有人可以解释为什么我不能args
完全在环境变量中定义我的 Docker 代理吗?
解决方案
推荐阅读
- html - 在嵌套 div 中定义绝对边距
- python - Opencv detectMultiScale错误
- go - 如果我想对分叉的存储库进行更改,却发现我不能因为分叉的包导入自身,该怎么办
- django - 服务器是否在主机“localhost”(127.0.0.1) 上运行并接受端口 5432 上的 TCP/IP 连接?
- javascript - 删除部分 JSON
- java - 运行与安全管理器相关的 EvoSuite 测试时出现异常
- javascript - Jquery检查值输入是否在数组中
- php - 如何修复错误:不能将字符串偏移量用作数组
- angular - 部分角载荷 css
- python - PySMB 处理程序 - [WinError 10054] 现有连接被远程主机强行关闭