Fix #40492
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
| ... | ... |
@@ -1,6 +1,7 @@ |
| 1 | 1 |
# syntax=docker/dockerfile:1.1.3-experimental |
| 2 | 2 |
|
| 3 | 3 |
ARG CROSS="false" |
| 4 |
+ARG SYSTEMD="false" |
|
| 4 | 5 |
ARG GO_VERSION=1.13.8 |
| 5 | 6 |
ARG DEBIAN_FRONTEND=noninteractive |
| 6 | 7 |
ARG VPNKIT_DIGEST=e508a17cfacc8fd39261d5b4e397df2b953690da577e2c987a47630cd0c42f8e |
| ... | ... |
@@ -248,7 +249,7 @@ COPY ./contrib/dockerd-rootless.sh /build |
| 248 | 248 |
FROM djs55/vpnkit@sha256:${VPNKIT_DIGEST} AS vpnkit
|
| 249 | 249 |
|
| 250 | 250 |
# TODO: Some of this is only really needed for testing, it would be nice to split this up |
| 251 |
-FROM runtime-dev AS dev |
|
| 251 |
+FROM runtime-dev AS dev-systemd-false |
|
| 252 | 252 |
ARG DEBIAN_FRONTEND |
| 253 | 253 |
RUN groupadd -r docker |
| 254 | 254 |
RUN useradd --create-home --gid docker unprivilegeduser |
| ... | ... |
@@ -317,6 +318,19 @@ VOLUME /var/lib/docker |
| 317 | 317 |
# Wrap all commands in the "docker-in-docker" script to allow nested containers |
| 318 | 318 |
ENTRYPOINT ["hack/dind"] |
| 319 | 319 |
|
| 320 |
+FROM dev-systemd-false AS dev-systemd-true |
|
| 321 |
+RUN --mount=type=cache,sharing=locked,id=moby-dev-aptlib,target=/var/lib/apt \ |
|
| 322 |
+ --mount=type=cache,sharing=locked,id=moby-dev-aptcache,target=/var/cache/apt \ |
|
| 323 |
+ apt-get update && apt-get install -y --no-install-recommends \ |
|
| 324 |
+ dbus \ |
|
| 325 |
+ dbus-user-session \ |
|
| 326 |
+ systemd \ |
|
| 327 |
+ systemd-sysv |
|
| 328 |
+RUN mkdir -p hack \ |
|
| 329 |
+ && curl -o hack/dind-systemd https://raw.githubusercontent.com/AkihiroSuda/containerized-systemd/b70bac0daeea120456764248164c21684ade7d0d/docker-entrypoint.sh \ |
|
| 330 |
+ && chmod +x hack/dind-systemd |
|
| 331 |
+ENTRYPOINT ["hack/dind-systemd"] |
|
| 332 |
+ |
|
| 320 | 333 |
FROM runtime-dev AS binary-base |
| 321 | 334 |
ARG DOCKER_GITCOMMIT=HEAD |
| 322 | 335 |
ENV DOCKER_GITCOMMIT=${DOCKER_GITCOMMIT}
|
| ... | ... |
@@ -368,5 +382,5 @@ COPY --from=build-dynbinary /build/bundles/ / |
| 368 | 368 |
FROM scratch AS cross |
| 369 | 369 |
COPY --from=build-cross /build/bundles/ / |
| 370 | 370 |
|
| 371 |
-FROM dev AS final |
|
| 371 |
+FROM dev-systemd-${SYSTEMD} AS final
|
|
| 372 | 372 |
COPY . /go/src/github.com/docker/docker |
| ... | ... |
@@ -142,6 +142,10 @@ endif |
| 142 | 142 |
DOCKER_RUN_DOCKER := $(DOCKER_FLAGS) "$(DOCKER_IMAGE)" |
| 143 | 143 |
|
| 144 | 144 |
DOCKER_BUILD_ARGS += --build-arg=GO_VERSION |
| 145 |
+ifdef DOCKER_SYSTEMD |
|
| 146 |
+DOCKER_BUILD_ARGS += --build-arg=SYSTEMD=true |
|
| 147 |
+endif |
|
| 148 |
+ |
|
| 145 | 149 |
BUILD_OPTS := ${BUILD_APT_MIRROR} ${DOCKER_BUILD_ARGS} ${DOCKER_BUILD_OPTS} -f "$(DOCKERFILE)"
|
| 146 | 150 |
ifdef USE_BUILDX |
| 147 | 151 |
BUILD_OPTS += $(BUILDX_BUILD_EXTRA_OPTS) |