【问题标题】:using docker-compose on a kubernetes instance with jenkins - mounting empty volumes在带有 jenkins 的 kubernetes 实例上使用 docker-compose - 安装空卷
【发布时间】:2018-10-16 06:50:37
【问题描述】:

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

当我触发一项新工作时,我能够成功地启动并运行一切,直到我的测试点。

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

当我运行docker-compose up 命令时,一切正常,服务启动它们的初始化脚本。但是,坐骑是空的。我已验证文件存在于 Jenkins 从站上,并且当我运行 docker-compose 时,在 docker 服务中创建了挂载,但是 它们是空的

一些信息:

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

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

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

我错过了什么? 我只想将一个目录挂载到我的 docker-compose 服务中。这可以在 Windows、Ubuntu 和 Centos 设备上完美运行。为什么它不能使用 Kubernetes 实例?

【问题讨论】:

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


【解决方案1】:

我找到了失败的原因here:

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

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

因此,似乎不可能将外部 docker 中的某些东西安装到内部 docker 中。必须找到另一个解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多