我有一个jenkins声明性管道构建,它运行gradle并使用gradle插件创建一个docker镜像。我还使用了dockerfile agent指令,所以整个东西都在docker容器中运行。这与jenkins本身安装在docker中非常有效(我知道,这是很多码头工人)。我将jenkins安装在Docker for dock上的docker容器中,每https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/使用-v /var/run/docker.sock:/var/run/docker.sock(DooD)。通过此设置,管道docker代理运行正常,管道docker代理中的docker build命令也运行良好。我假设jenkins还在它的内部docker容器上安装了docker socket。
现在我试图在安装了docker的ec2实例上安装的jenkins上运行它。 jenkins用户将docker组作为其主要组。 jenkins用户能够运行" docker run hello-world"成功。我的管道构建启动了docker代理容器(基于添加了各种内容的gradle图像)但是当gradle尝试运行docker build命令时,我得到以下内容:
* What went wrong:
Execution failed for task ':docker'.
> Docker execution failed
Command line [docker build -t config-server:latest /var/lib/****/workspace/nfig-server_feature_****-HRUNPR3ZFDVG23XNVY6SFE4P36MRY2PZAHVTIOZE2CO5EVMTGCGA/build/docker] returned:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
是否可以使用声明性管道在docker代理中构建docker镜像?
答案 0 :(得分:1)
是的,是的。
问题不在于詹金斯'声明性管道,但是你如何设置和运行东西。
从上面的错误看,似乎缺少需要授予的权限。
也许如果您分享您的配置以及您的运营方式,更多人可以提供帮助。