Summary
docker-in-docker 4.1.1 ignores "dockerDashComposeVersion": "none" on Debian-based images when moby=true. The installer unconditionally installs moby-compose, so consumers cannot omit Compose as the feature schema promises.
Reproduction
Using the frozen feature digest sha256:2b44bcb32e75d5a3c028479f7f957cf7d5e42d81761373025a8d501dd3748f88:
{
"ghcr.io/devcontainers/features/docker-in-docker:4": {
"version": "29.8.1",
"moby": true,
"mobyBuildxVersion": "0.37.1",
"dockerDashComposeVersion": "none"
}
}
The build log confirms DOCKERDASHCOMPOSEVERSION="none", but the resulting image contains:
$ dpkg -S /usr/libexec/docker/cli-plugins/docker-compose
moby-compose: /usr/libexec/docker/cli-plugins/docker-compose
$ docker compose version
Docker Compose version 5.5.1-1
The APT history records apt-get -y install --no-install-recommends moby-compose.
Root cause
In src/docker-in-docker/install.sh, the Debian/Moby engine-install branch unconditionally executes:
apt-get -y install --no-install-recommends moby-compose
The RHEL branch immediately below correctly guards the equivalent install with DOCKER_DASH_COMPOSE_VERSION != none.
The Debian/Docker CE branch also appears to install docker-compose-plugin unconditionally.
Expected behavior
Guard both Debian Compose package installs with the same none check used by the RHEL branch, and add Debian tests that assert both the standalone binary and CLI plugin are absent when the option is none.
Summary
docker-in-docker4.1.1 ignores"dockerDashComposeVersion": "none"on Debian-based images whenmoby=true. The installer unconditionally installsmoby-compose, so consumers cannot omit Compose as the feature schema promises.Reproduction
Using the frozen feature digest
sha256:2b44bcb32e75d5a3c028479f7f957cf7d5e42d81761373025a8d501dd3748f88:{ "ghcr.io/devcontainers/features/docker-in-docker:4": { "version": "29.8.1", "moby": true, "mobyBuildxVersion": "0.37.1", "dockerDashComposeVersion": "none" } }The build log confirms
DOCKERDASHCOMPOSEVERSION="none", but the resulting image contains:The APT history records
apt-get -y install --no-install-recommends moby-compose.Root cause
In
src/docker-in-docker/install.sh, the Debian/Moby engine-install branch unconditionally executes:The RHEL branch immediately below correctly guards the equivalent install with
DOCKER_DASH_COMPOSE_VERSION != none.The Debian/Docker CE branch also appears to install
docker-compose-pluginunconditionally.Expected behavior
Guard both Debian Compose package installs with the same
nonecheck used by the RHEL branch, and add Debian tests that assert both the standalone binary and CLI plugin are absent when the option isnone.