在Docker中使用Docker Compose构建Docker容器。

10

我对Docker非常新手,根据此处的文档,尝试使用docker-compose 1.14.0在dind中部署多个容器,但出现以下问题:

docker run -v /home/dudarev/compose/:/compose/ --privileged docker:dind /compose/docker-compose
/usr/local/bin/dockerd-entrypoint.sh: exec: line 21: /compose/docker-compose: not found

我有遗漏什么吗?


1
您需要在容器中安装docker-compose命令。它不会默认随Compose一起提供。 - Robert
如果您还不熟悉 Docker,请先问问自己是否确定需要 Docker-in-Docker 设置?请查看此博客文章(特别是“解决方案”部分):http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/。 - JonasVautherin
@JonesV 是的,dind 是必须的,它用于构建和测试镜像并保持主机 Docker 的清洁。然而,在 Docker Hub 上托管的那个基于 busybox 的镜像似乎无法找到二进制文件,但如果你从原始仓库构建镜像,因为它有一个适当的 bash(不像 busybox 中的 ash),它就能找到了。这可能与 busybox 如何挂载文件系统有关,我在这里感到相当困惑。 - Ruso_x
3个回答

16

在Docker Hub上有官方的docker-compose镜像,只需要使用它即可。

按照以下步骤操作:

  • 在主机上创建一个目录 mkdir /root/test
  • 创建docker-compose.yaml文件,并添加以下内容:
version: '2'

services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: redis
  • 运行docker run命令,在容器内运行docker-compose。
docker run -itd -v /var/run/docker.sock:/var/run/docker.sock -v /root/test/:/var/tmp/ docker/compose:1.24.1  -f /var/tmp/docker-compose.yaml up -d

注意:容器内的/var/tmp目录将包含docker-compose.yaml文件,因此我使用-f选项指定yaml文件的完整路径。另外,docker.sock从主机挂载到容器上。

希望这可以帮助您。


5
在执行docker run之前,在Dockerfile中添加docker-compose安装。例如,如果您有一个Ubuntu Docker,请在Dockerfile中添加以下内容:
RUN aptitude -y install docker-compose
RUN ln -s /usr/local/bin/docker-compose /compose/docker-compose

由于默认情况下docker-compose安装在/usr/local/bin,因此如果您的入口点在/compose文件夹中查找docker compose,则会出现问题。

如果您需要特定版本的docker-compose(例如1.20.0-rc2):

RUN curl -L https://github.com/docker/compose/releases/download/1.20.0-rc2/docker-compose-`uname -s`-`uname -m` -o /compose/docker-compose
RUN chmod +x /compose/docker-compose

为了使安装工作正常,必须使用以下命令:RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose RUN chmod +x /usr/local/bin/docker-compose - aL_eX

4

这是一个完整的Dockerfile,可在Docker内部运行docker-compose。

FROM ubuntu:21.04
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y python3
RUN apt-get install -y pip
RUN apt-get install -y curl
RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接