如何解决OSX上gitlab-runner exec docker的‘Job failed: invalid volume specification’错误
解决GitLab Runner在OSX 10.14.5中执行
gitlab-runner exec docker build的卷挂载错误 我之前帮不少开发者处理过这类问题,你遇到的ERROR: Job failed: invalid volume specification错误,根源很清楚:你的项目路径里包含空格(Kubernetes Test),Docker在解析卷挂载参数时,会把空格当成参数分隔符,导致原本完整的路径被拆成了两部分,自然识别不了正确的挂载路径。
下面给你几个可行的解决办法,按从易到难排序:
方案1:给挂载路径套上双引号
不管是在.gitlab-ci.yml的配置里,还是直接在执行gitlab-runner exec命令时,把包含空格的完整路径用双引号包裹起来,让Docker把整个路径当成一个参数解析:
如果是修改CI配置:
job_name: script: - # 你的构建命令 variables: PROJECT_PATH: "/Users/xxx/projects/Kubernetes Test/tasks" before_script: - docker run -v "$PROJECT_PATH:$PROJECT_PATH:ro" your-image
如果是直接在命令行执行:
gitlab-runner exec docker build -v "/Users/xxx/projects/Kubernetes Test/tasks:/Users/xxx/projects/Kubernetes Test/tasks:ro"
方案2:转义路径里的空格
在路径中的空格前加反斜杠\,手动告诉Docker这个空格是路径的一部分,不是分隔符:
gitlab-runner exec docker build -v /Users/xxx/projects/Kubernetes\ Test/tasks:/Users/xxx/projects/Kubernetes\ Test/tasks:ro
方案3:彻底移除路径里的空格
这是一劳永逸的办法——把你的项目文件夹重命名,去掉空格,比如改成KubernetesTest或者Kubernetes_Test:
mv "/Users/xxx/projects/Kubernetes Test" "/Users/xxx/projects/KubernetesTest"
之后记得更新.gitlab-ci.yml里所有用到这个路径的地方,再重新执行构建命令就不会有问题了。
其实Windows系统的类似问题也是同一个原因,但OSX下的处理更偏向于Unix风格的转义或引号包裹,核心都是让Docker正确识别带特殊字符的路径。
内容的提问来源于stack exchange,提问作者luk
相关产品推荐
相关产品推荐

