How can I install Docker inside an alpine container?
All you need is to install Docker CLI in an image based on Alpine and run the container mounting docker.sock
. It allows running sibling Docker containers using host's Docker Engine. It is known as Docker-out-of-Docker and is considered a good alternative to running a separate Docker Engine inside a container (aka Docker-in-Docker).
Dockerfile
FROM alpine:3.11
RUN apk update && apk add --no-cache docker-cli
Build the image:
docker build -t alpine-docker .
Run the container mounting the docker.sock
(-v /var/run/docker.sock:/var/run/docker.sock
):
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock alpine-docker docker ps
The command above should successfully run docker ps
inside the Alpine-based container.
Dockerfile for running docker-cli inside alpine
FROM alpine:3.10
RUN apk add --update docker openrc
RUN rc-update add docker boot
Build docker image
docker build -t docker-alpine .
Run container (host and the alipne container will share the same docker engine)
docker run -it -v "/var/run/docker.sock:/var/run/docker.sock:rw" docker-alpine:latest /bin/sh