使用jenkins在kubernetes实例上使用docker-compose - 安装空卷

时间:2018-05-06 08:25:57

标签: docker jenkins kubernetes google-cloud-platform docker-compose

我使用Googles Jenkins on Kubernetes解决方案设置了Jenkins实例。我没有更改Kubernetes Pod的任何设置。

当我触发一份新工作时,我能够成功地完成所有工作,直到我的测试为止。

我的测试使用docker-compose。首先,我确保在实例上安装docker(1.5-1 + b1)和docker-compose(1.8.0-2)(我知道我可以通过使用已包含这些的图像来优化它,但我仍然只是验证的概念)。

当我运行docker-compose up命令时,一切正常,服务启动其初始化脚本。但是,坐标为空。我已经验证了Jenkins slave上存在的文件,当我运行docker-compose时,mount在docker服务中创建,但是它们是空的

一些信息:

为了绕过文件权限,我使用/tmp作为Jenkins工作区。我正在使用SCM来拉取我的文件(成功),并在docker-compose文件中指定version: '2'和带有绝对路径的挂载路径。失败的服务的卷部分如下所示:

volumes:
 - /tmp/automation:/opt/automation

我将服务中运行的命令更改为ls /opt/automation,结果是一个空目录。

我缺少什么? 我只想将目录安装到我的docker-compose服务中。这完全适用于Windows,Ubuntu和Centos设备。为什么使用Kubernetes实例不起作用?

1 个答案:

答案 0 :(得分:0)

我找到了here失败的原因:

  

Docker容器中的Docker容器使用父HOST的Docker守护程序,因此,“docker-in-docker”案例中安装的任何卷仍然是从HOST引用的,而不是从Container引用。

     

因此,在主机中从Jenkins容器安装的实际路径“不存在”。因此,在“docker-in-docker”容器中创建一个新目录,该目录为空。当目录安装到Container内的新Docker容器时,同样适用。

所以看起来不可能从外部的码头工人装入内部码头工具。必须找到另一种解决方案。