diff --git a/base/docker/Dockerfile b/base/docker/Dockerfile new file mode 100644 index 000000000..d5081414a --- /dev/null +++ b/base/docker/Dockerfile @@ -0,0 +1,36 @@ +FROM alpine:3.5 + +# Docker daemon only minimal Alpine install + +# set up subuid/subgid so that "--userns-remap=default" works out-of-the-box +RUN set -x \ + && addgroup -S dockremap \ + && adduser -S -G dockremap dockremap \ + && echo 'dockremap:165536:65536' >> /etc/subuid \ + && echo 'dockremap:165536:65536' >> /etc/subgid + +# https://github.com/docker/docker/blob/master/project/PACKAGERS.md#runtime-dependencies +RUN apk add --no-cache \ + ca-certificates \ + curl \ + iptables \ + xz + +# removed xfsprogs e2fs btrfs as we do not support dm or btrfs yet +# removed openssl as I do not think server needs it + +ENV DOCKER_BUCKET get.docker.com +ENV DOCKER_VERSION 17.03.0-ce +ENV DOCKER_SHA256 4a9766d99c6818b2d54dc302db3c9f7b352ad0a80a2dc179ec164a3ba29c2d3e + +# we could avoid installing client here I suppose +RUN set -x \ + && curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz" -o docker.tgz \ + && echo "${DOCKER_SHA256} *docker.tgz" | sha256sum -c - \ + && tar -xzvf docker.tgz \ + && mv docker/* /usr/bin/ \ + && rmdir docker \ + && rm docker.tgz \ + && docker -v + +ENTRYPOINT ["/usr/bin/docker-init", "/usr/bin/dockerd"] diff --git a/base/docker/Makefile b/base/docker/Makefile new file mode 100644 index 000000000..00bd06104 --- /dev/null +++ b/base/docker/Makefile @@ -0,0 +1,29 @@ +.PHONY: tag push + +BASE=alpine:3.5 +IMAGE=docker + +default: push + +hash: Dockerfile + DOCKER_CONTENT_TRUST=1 docker pull $(BASE) + tar cf - $^ | docker build --no-cache -t $(IMAGE):build - + docker run --entrypoint /bin/sh --rm $(IMAGE):build -c 'cat Dockerfile /lib/apk/db/installed | sha1sum' | sed 's/ .*//' > $@ + +push: hash + docker pull mobylinux/$(IMAGE):$(shell cat hash) || \ + (docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash) && \ + docker push mobylinux/$(IMAGE):$(shell cat hash)) + docker rmi $(IMAGE):build + rm -f hash + +tag: hash + docker pull mobylinux/$(IMAGE):$(shell cat hash) || \ + docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash) + docker rmi $(IMAGE):build + rm -f hash + +clean: + rm -f hash + +.DELETE_ON_ERROR: