我在Kubernetes解决方案上使用Google Jenkins进行了Jenkins实例设置。我尚未更改Kubernetes Pod的任何设置。
当我触发一项新工作时,我可以成功地启动并运行所有内容,直到进行测试为止。
我的测试使用docker-compose。首先,我确保在实例上安装docker(1.5-1 + b1)和docker- compose(1.8.0-2)(我知道我可以使用已经包含这些镜像的映像来优化此镜像,但我仍然处于概念验证)。
当我运行docker-compose up命令时,一切正常,服务启动其初始化脚本。但是, 安装座是空的 。我已验证文件在Jenkins从站上存在,并且在我运行docker-compose时在docker服务内部创建了挂载,但是 它们为空 。
docker-compose up
一些信息:
为了避开文件权限,我正在使用/tmpJenkinsWorkspace。我正在使用SCM成功提取我的文件,并且在我指定的docker-compose文件中version: '2'以及带有绝对路径的安装路径。服务失败的卷部分如下所示:
/tmp
version: '2'
volumes: - /tmp/automation:/opt/automation
我将服务中运行的命令更改为ls /opt/automation,结果是一个空目录。
ls /opt/automation
我想念什么? 我只想将目录挂载到docker-compose服务中 。它可以在Windows,Ubuntu和Centos设备上完美运行。为什么不能使用Kubernetes实例工作?
我发现这里失败的原因:
Docker容器中的Docker容器使用父HOST的Docker守护程序,因此,在“ docker-in- docker”案例中安装的任何卷仍从HOST而非容器中引用。 因此,在HOST中从Jenkins容器安装的实际路径“不存在”。因此,将在空的“ docker-in- docker”容器中创建一个新目录。将目录挂载到Container内的新Docker容器时,同样适用。
Docker容器中的Docker容器使用父HOST的Docker守护程序,因此,在“ docker-in- docker”案例中安装的任何卷仍从HOST而非容器中引用。
因此,在HOST中从Jenkins容器安装的实际路径“不存在”。因此,将在空的“ docker-in- docker”容器中创建一个新目录。将目录挂载到Container内的新Docker容器时,同样适用。
因此,似乎不可能将某些东西从外部docker装入内部docker。并且必须找到另一个解决方案。