docker-在 Alpine 容器中组合
docker-compose inside Alpine container
我正在尝试将我的应用程序(代码、Docker 文件和 docker-compose 脚本)捆绑在一个图像中以便于部署(入口点将只是 docker-compose up
).我的 Docker 这个顶级应用图片的文件看起来像这样
FROM alpine:latest
COPY . /app
RUN apk update && apk add --no-cache docker py-pip openrc && pip install docker-compose
当我运行这张图的时候,好像dockerd还没有开始,没有出现在top
结果中; docker ps
报告“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程是否 运行ning?
“。但是,如果我这样做 service docker start
,这个 returns “* 警告:docker 已经开始了”。我需要做什么特别的事情才能让 Docker 工作一个 Alpine 容器?
Docker 由运行所有服务的 docker 守护进程和用于与守护进程交互的 CLI 组成(好吧,还有很多其他部分,但这些是最重要的)。安装 docker-compose
不会安装守护程序,无论您从 service
命令收到什么消息。
要在容器内使用 docker
,您必须使用 docker-in-docker
图像。它被称为docker:dind
。继承它(而不是 alpine
)并享受它。
但在阅读 this article 之前,这解释了为什么这不是一个好主意,以及在容器内使用 docker 的其他方法是什么(提示:您可以调用主机的 docker 守护程序从容器内部仅安装 /var/run/docker.sock:/var/run/docker.sock
插座)。
如果您不能或不想继承 grapes 中提到的 docker:dind
,可以选择使用 alpine
作为基础映像并安装 Docker CLI 和 Docker 撰写。
为了保持图像较小,可以在 Docker Compose 安装后删除一些依赖项:
FROM alpine:3.11
RUN apk update && \
apk add --no-cache docker-cli python3 && \
apk add --no-cache --virtual .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make && \
pip3 install docker-compose && \
apk del .docker-compose-deps
此映像不包含 Docker 引擎,并且必须通过从主机 /var/run/docker.sock
安装 /var/run/docker.sock
使用 Docker-in-Dcoker 方法
docker run -v /var/run/docker.sock:/var/run/docker.sock <image name>
你可以运行这个来获得docker-compose
apk update && apk add --no-cache --virtual docker-cli python3 .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make python3 py3-pip py-pip curl libffi-dev openssl-dev gcc libc-dev rust cargo make
pip install docker-compose
我正在尝试将我的应用程序(代码、Docker 文件和 docker-compose 脚本)捆绑在一个图像中以便于部署(入口点将只是 docker-compose up
).我的 Docker 这个顶级应用图片的文件看起来像这样
FROM alpine:latest
COPY . /app
RUN apk update && apk add --no-cache docker py-pip openrc && pip install docker-compose
当我运行这张图的时候,好像dockerd还没有开始,没有出现在top
结果中; docker ps
报告“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程是否 运行ning?
“。但是,如果我这样做 service docker start
,这个 returns “* 警告:docker 已经开始了”。我需要做什么特别的事情才能让 Docker 工作一个 Alpine 容器?
Docker 由运行所有服务的 docker 守护进程和用于与守护进程交互的 CLI 组成(好吧,还有很多其他部分,但这些是最重要的)。安装 docker-compose
不会安装守护程序,无论您从 service
命令收到什么消息。
要在容器内使用 docker
,您必须使用 docker-in-docker
图像。它被称为docker:dind
。继承它(而不是 alpine
)并享受它。
但在阅读 this article 之前,这解释了为什么这不是一个好主意,以及在容器内使用 docker 的其他方法是什么(提示:您可以调用主机的 docker 守护程序从容器内部仅安装 /var/run/docker.sock:/var/run/docker.sock
插座)。
如果您不能或不想继承 grapes docker:dind
,可以选择使用 alpine
作为基础映像并安装 Docker CLI 和 Docker 撰写。
为了保持图像较小,可以在 Docker Compose 安装后删除一些依赖项:
FROM alpine:3.11
RUN apk update && \
apk add --no-cache docker-cli python3 && \
apk add --no-cache --virtual .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make && \
pip3 install docker-compose && \
apk del .docker-compose-deps
此映像不包含 Docker 引擎,并且必须通过从主机 /var/run/docker.sock
安装 /var/run/docker.sock
使用 Docker-in-Dcoker 方法
docker run -v /var/run/docker.sock:/var/run/docker.sock <image name>
你可以运行这个来获得docker-compose
apk update && apk add --no-cache --virtual docker-cli python3 .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make python3 py3-pip py-pip curl libffi-dev openssl-dev gcc libc-dev rust cargo make
pip install docker-compose