Alpine 容器内的 docker-compose

Mad*_*den 7 docker docker-compose alpine-linux

我正在尝试将我的应用程序(代码、Dockerfiles 和 docker-compose 脚本)捆绑在一个映像内,以便于部署(入口点将只是docker-compose up)。我的这个顶级应用程序映像的 Dockerfile 看起来像这样

FROM alpine:latest
COPY . /app
RUN apk update && apk add --no-cache docker py-pip openrc && pip install docker-compose
Run Code Online (Sandbox Code Playgroud)

当我运行这个镜像时,dockerd 似乎还没有启动,没有出现在top结果中;docker ps报告“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程正在运行吗?”。但是,如果我这样做service docker start,则会返回“*警告:docker 已经启动”。为了让 Docker 在 Alpine 容器中工作,我需要做些什么特别的事情吗?

gra*_*pes 2

Docker 由运行所有服务的 docker 守护进程和用于与守护进程交互的 CLI 组成(好吧,还有很多其他部分,但这些是最重要的)。docker-compose无论您从命令中收到什么消息,安装都不会安装守护程序service

要使用docker内部容器,您必须使用docker-in-docker图像。它被称为docker:dind。继承它(而不是alpine)并享受。

但在阅读这篇文章之前,它解释了为什么这不是一个好主意,以及在容器内使用 docker 的其他方法是什么(提示:您可以通过安装/var/run/docker.sock:/var/run/docker.sock套接字从容器内部调用主机的 docker 守护进程)。