我有一个linux,我在其上安装了docker。我有几个码头集装箱与不同的程序,我必须使用。这是我的建筑:
除了那个红盒子外,一切都很好。
我要做的是动态地提供一个具有云功能的jenkins码头对接代理,以便构建我的码头映像并将它们推送到我设置的码头注册中心。
我一直在寻找文档,以便在码头容器中创建一个码头,我发现了以下内容:https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
本文指出,为了避免我的主要码头安装出现问题,我必须创建一个卷:
-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对接器安装来构建和运行docker映像,所以一切都很好。
但是,当涉及到jenkins码头云配置时,我会遇到问题。
据我所知,自从#826构建以来,插件已经改变了它的卷语法。
这是我尝试过的配置:
以及我在试图启动代理时收到的错误消息:
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,并且它与我在本地运行的坞内的路径相同.
我试着检查源代码,找出我做错了什么,但不清楚这段代码为我做了什么(https://github.com/jenkinsci/docker-plugin/blob/master/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplateBase.java,从第884行开始),我也尝试了反斜杠,等等。
有人知道配置面板中用于设置简单卷的预期语法是什么吗?
发布于 2022-03-06 17:28:35
将配置更改为:
type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock
它不是卷,而是绑定类型。
发布于 2022-09-02 09:30:28
这适用于我的type=bind,源代码=/sys/fs/cgroup,目标=/sys/fs/cgroup,readonly
https://stackoverflow.com/questions/70895210
复制相似问题