【问题标题】:Volumes in Docker inside Docker?Docker 内部的 Docker 卷?
【发布时间】:2018-11-28 19:41:46
【问题描述】:

我正在运行 buildbot,它是 EC2 机器上的 CI 工具。它目前作为 docker 容器运行,一个用于 buildbot master,一个用于 buildbot worker。在 buildbot worker 中,我必须再次运行 docker 来构建图像和运行容器。

在对如何最好地做到这一点进行了一些研究之后,我已将 docker sock 文件从主机安装到 buildbot 工作容器。现在,从 buildbot worker 内部,我可以连接到主机 docker 守护进程并使用构建缓存。

现在的主要问题是,在 buildbot 工作人员内部,我有一个 docker compose 文件,其中对于一项服务,我正在安装一个像这样的文件 ./configs/my.cnf:/etc/my.cnf 但它失败了。做更多的研究,这是因为configs/my.cnf 是相对于 buildbot 工作目录的,而且由于我使用的是主机 docker 守护进程,它使用主机路径解析文件,所以它无法找到该文件。

我无法弄清楚如何最好地做到这一点。有一些关于为此使用数据量的建议,但我不确定如何最好地使用这些建议。 关于我们如何做到这一点的任何想法?

【问题讨论】:

    标签: docker docker-compose buildbot docker-in-docker


    【解决方案1】:

    您对 buildbot worker 的创建有任何控制权吗?你能控制 buildbot worker 目录吗?

    export BUILD_BOT_DIR=$(mktemp -d) &&
        docker container create -v /var/run/docker.sock:/var/run/docker.sock -v ${BUILD_BOT_DIR}:${BUILD_BOT_DIR} -e BUILD_BOT_DIR ...
    

    在这种情况下,路径“./configs/my:conf”指向容器和主机上的同一个文件。

    【讨论】:

    • 不会只指定-v ${BUILD_BOT_DIR} 只创建一个卷而不是绑定挂载?我的意思是 buildbot worker 中的文件仍然无法在主机守护进程上解析,因为它是一个卷,而不是具有相同目录路径的绑定挂载。
    • 还有一个问题是 buildbot worker 目录已经包含一些我不想覆盖的文件。绑定挂载会覆盖文件
    • @KishuAgarwal 我认为-v ${BUILD_BOT_DIR}-v ${BUILD_BOT_DIR}:${BUILD_BOT_DIR} 的简写,但我认为我错了。
    • 您知道实现此目的的另一种方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多