【问题标题】:docker compose inside docker in dockerdocker compose inside docker in docker
【发布时间】:2021-08-21 15:09:36
【问题描述】:

我有什么: 我正在为 CI/CD 创建一个 Jenkins(BlueOcean Pipeline)。我正在使用 docker in docker 方法来使用 Jenkins,如 Jenkins docs tutorail 中所述。 我已经测试了设置,它工作正常。我可以在 Jenkins 容器中构建和运行 docker 镜像。现在,我正在尝试使用 docker-compose, but it says docker-compose: not found `

问题:

无法在容器内使用 `docker-compose(Jenkins)。

我想要什么: 我希望能够使用dind(docker in docker)方法在容器内使用`docker-compose。

非常感谢任何帮助。

【问题讨论】:

  • 我没有从问题中得到它,您是否安装了docker-compose?它通常与 Docker 分开安装。见this
  • 我在 docker 方法中使用 docker 容器。整个方法可以在问题所附的官方 Jenkins 文章链接中找到。
  • 是的,docker-compose 已安装在本地,但在容器内不可用。
  • 本地安装的东西不会单独出现在容器中。您可以尝试将其安装在内部,但最好将其安装在容器中。

标签: docker jenkins docker-compose docker-in-docker


【解决方案1】:

这是我的工作解决方案:

FROM maven:3.6-jdk-8

USER root

RUN apt update -y
RUN apt install -y curl

# Install Docker

RUN curl https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz | tar xvz -C /tmp/ && mv /tmp/docker/docker /usr/bin/docker

# Install Docker Compose

RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

# Here your customizations...

【讨论】:

  • 所以你已经在dockerCompose文件的开头添加了这些脚本来安装docker-compose。对吧?
  • 没错,所以每个 Jenkins 构建都可以执行 docker 并在自己的 docker 镜像中进行组合。我用这种方法很多次了。
  • 这种方法好吗?而且你是否像我在我的问题文章中提到的方法一样在 docker 容器中使用 Jenkins?
  • 此外,我可以在容器内使用docker 来构建docker镜像。但问题仅在于docker-compose。所以按照你的方法,我只需要添加 docker compose 脚本。
  • 我有一个基于其官方 docker 镜像的 docker 实例。每个 Jenkins 管道都会生成自己的 docker 镜像,我在其中安装 docker 和 docker-compose 以服务于我的自定义构建逻辑。
【解决方案2】:

那台机器上似乎没有安装docker-compose
您可以使用docker-compose --version检查是否安装了docker-compose
如果未安装,则可以通过以下方式安装:

  1. 使用 apt- 包管理器:sudo apt install -y docker-compose
  2. 使用 python 安装管理器:sudo pip install docker-compose

【讨论】:

  • `docker-compose 安装在我的机器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多