Jenkins Docker 插件 volume/mount 使用什么语法
Jenkins Docker plugin volume/mount what syntax to use
我有一个 linux 虚拟机,我在上面安装了 docker。我有几个 docker 容器,其中包含我必须使用的不同程序。这是我的架构:
除了红框外,一切正常。
我想做的是动态地提供具有云功能的 jenkins docker-in-docker 代理,以便构建我的 docker 图像并将它们推送到我设置的 docker 注册表。
我一直在寻找在 docker 容器中创建 docker 的文档,我发现了这个:
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
这篇文章指出,为了避免我的主要 docker 安装出现问题,我必须创建一个卷:
-v /var/run/docker.sock:/var/run/docker.sock
我在本地测试了我的图像,我没有问题运行
docker run -d -v --name test /var/run/docker.sock:/var/run/docker.sock
docker exec -it test /bin/bash
docker run hello-world
容器正在使用 linux vm docker 安装来构建和 运行 docker 图像所以一切都很好。
但是,当涉及到 jenkins docker 云配置时,我遇到了问题。
据我所知,自从 #826 构建以来,docker jenkins 插件更改了它的卷语法。
这是我试过的配置:
我在尝试启动代理时收到的错误消息:
Reason: Template provisioning failed.
com.github.dockerjava.api.exception.BadRequestException: {"message":"create
/var/run/docker.sock: \"/var/run/docker.sock\" 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"}
我也试过那个配置:
Reason: Template provisioning failed.
com.github.dockerjava.api.exception.BadRequestException: {"message":"invalid mount config for type \"volume\": invalid mount path: './var/run/docker.sock' mount path must be absolute"}
我不明白这意味着什么,因为在我的 linux 虚拟机上,docker.sock 绝对路径是 /var/run/docker.sock,它与 docker 中的路径相同] 在 docker 我在 运行 本地...
我试图检查源代码以找出我做错了什么,但不清楚代码对我做了什么(https://github.com/jenkinsci/docker-plugin/blob/master/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplateBase.java,从第 884 行开始),我也尝试使用反斜杠等。没有成功了。
有谁知道配置面板中用于设置简单卷的预期语法是什么?
将配置更改为:
type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock
它不是卷,它是绑定类型。
我有一个 linux 虚拟机,我在上面安装了 docker。我有几个 docker 容器,其中包含我必须使用的不同程序。这是我的架构:
除了红框外,一切正常。
我想做的是动态地提供具有云功能的 jenkins docker-in-docker 代理,以便构建我的 docker 图像并将它们推送到我设置的 docker 注册表。
我一直在寻找在 docker 容器中创建 docker 的文档,我发现了这个: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
这篇文章指出,为了避免我的主要 docker 安装出现问题,我必须创建一个卷:
-v /var/run/docker.sock:/var/run/docker.sock
我在本地测试了我的图像,我没有问题运行
docker run -d -v --name test /var/run/docker.sock:/var/run/docker.sock
docker exec -it test /bin/bash
docker run hello-world
容器正在使用 linux vm docker 安装来构建和 运行 docker 图像所以一切都很好。
但是,当涉及到 jenkins docker 云配置时,我遇到了问题。
据我所知,自从 #826 构建以来,docker jenkins 插件更改了它的卷语法。
这是我试过的配置:
我在尝试启动代理时收到的错误消息:
Reason: Template provisioning failed.
com.github.dockerjava.api.exception.BadRequestException: {"message":"create
/var/run/docker.sock: \"/var/run/docker.sock\" 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"}
我也试过那个配置:
Reason: Template provisioning failed.
com.github.dockerjava.api.exception.BadRequestException: {"message":"invalid mount config for type \"volume\": invalid mount path: './var/run/docker.sock' mount path must be absolute"}
我不明白这意味着什么,因为在我的 linux 虚拟机上,docker.sock 绝对路径是 /var/run/docker.sock,它与 docker 中的路径相同] 在 docker 我在 运行 本地...
我试图检查源代码以找出我做错了什么,但不清楚代码对我做了什么(https://github.com/jenkinsci/docker-plugin/blob/master/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplateBase.java,从第 884 行开始),我也尝试使用反斜杠等。没有成功了。
有谁知道配置面板中用于设置简单卷的预期语法是什么?
将配置更改为:
type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock
它不是卷,它是绑定类型。