gpt4 book ai didi

linux - 通过容器使用 docker 守护进程时在 docker-compose 中安装相关文件夹?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:29 24 4
gpt4 key购买 nike

我们之前在 Docker in Docker 中运行 Jenkins (DIND) 模式,即在 Jenkins docker 容器内运行 docker 守护进程。但是由于许多问题(其中一些在上面的链接中有描述),我们决定放弃这种方法,而是让容器使用主机守护进程,只需在启动容器时将其挂载为卷即可:

-v /var/run/docker.sock:/var/run/docker.sock

但是现在我们在使用 Docker Compose 挂载相对路径时遇到了问题它在 容器 中启动,在 DIND 模式下运行良好。考虑这个 docker-compose 文件:

myimage:
build: .
environment:
LANG: C.UTF-8
working_dir: /code
volumes:
- ../../../:/code
- ~/.m2/repository:/root/.m2/repository
- ~/.gradle:/root/.gradle

以前这会从 container 安装所有文件夹,例如 ../../../ 文件夹,但现在它似乎试图从 container 安装它们主持人。当我检查主机上的目录结构时,似乎 docker-compose 已经从容器中复制了目录结构,然后尝试挂载该文件夹,使其为空。

所以我的问题是,当从主机使用 docker 守护进程时,如何在 Docker Compose 中挂载相对路径?

最佳答案

您需要确保您主机上的相对路径与您的 Jenkins 容器内的相对路径相同,这样才能正常工作。

这并不是真正的相对路径,docker-compose 正在尽最大努力将相对路径转换为 ​​docker 主机所需的绝对路径。所有路径都在 docker 主机上进行评估以创建一个新容器,它不知道您正在远程或在容器内部运行 docker 客户端,也不知道您当前所在的目录。

作为另一种选择,您可能需要考虑切换到命名卷并在 Jenkins 容器中映射与其他容器中相同的命名卷。

关于linux - 通过容器使用 docker 守护进程时在 docker-compose 中安装相关文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com