Repository navigation
fix(bench): identify docker-compose's engine by asking the engine - #1940
Merged
Merged
Conversation
run.sh chose the engine with `docker info`. The docker CLI honours DOCKER_HOST, so on a host with Docker installed and DOCKER_HOST pointed at the Podman socket, `docker info` answered from Podman and the run was labelled a Docker (cross-engine) comparison. The same-engine comparison that docs/benchmarks.md publishes could not be selected at all once Docker was installed. bench/engine.sh now probes `/version` at the endpoint docker-compose will use (DOCKER_HOST, or the default Docker socket) and reads the answer: Podman lists a "Podman Engine" component and Docker does not. A DOCKER_CONTEXT, an ssh:// host or a silent endpoint leaves docker-compose unmeasured with the reason, rather than guessed. A Docker run also pre-pulls the pinned images into Docker's own store, since the Podman pre-pull did not reach it and the first timed `up` would have measured the download, and the build scenario removes its image from the engine that built it. Signed-off-by: Jaro-c <75870284+Jaro-c@users.noreply.github.com>
Jaro-c
added a commit
that referenced
this pull request
Sep 27, 2026
Bumps `Cargo.toml`, `Cargo.lock` and `debian/changelog` to 5.10.5 together. Patch release carrying #1942: when stopping a container fails because the host's AppArmor `pasta` profile refuses Podman's signal, podup prints the commands that fix that host. It also carries #1940 and #1943, which change only the benchmark harness. Signed-off-by: Jaro-c <75870284+Jaro-c@users.noreply.github.com> Signed-off-by: Jaro-c <75870284+Jaro-c@users.noreply.github.com>
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
bench/run.shdecided which engine docker-compose drove withdocker info. The docker CLI honoursDOCKER_HOST, so with Docker installed andDOCKER_HOSTpointed at the Podman socket, the run was labelled a Docker (cross-engine) comparison. The same-engine comparison published indocs/benchmarks.mdcould no longer be selected on such a host.upwould have measured the download.Changes
bench/engine.sh(new, sourced): probes/versionat the endpoint docker-compose uses (DOCKER_HOST, or the default Docker socket) and reads the server's answer. Podman lists aPodman Enginecomponent and Docker does not. ADOCKER_CONTEXT, anssh://host or an endpoint that does not answer leaves docker-compose unmeasured, with the reason printed.bench/run.sh: uses it, pre-pulls into Docker for a Docker run (and refuses to measure docker-compose on Docker if thedockerCLI is missing), and removes the build scenario's image from the engine that built it.bench/README.md: how the engine is chosen.Test plan
On a host with both Podman 5.7.0 and Docker 29.8.1:
DOCKER_HOST= Podman socketdocker infosucceeds, labelleddockerpodmanDOCKER_HOSTunsetdockerdockerDOCKER_HOST= missing socketDOCKER_CONTEXT=otherDOCKER_HOST=ssh://xPodman Enginebranch deleted, the Podman socket is reported asdocker. Restored, it reportspodman.bash bench/run.sh --smokeonce per engine:results/enginereadspodmananddockerrespectively, and each run measured all three tools.bash -nandshellcheck -xclean on both scriptsThe smoke runs also showed
restartfailing with HTTP 500 (rootless netns: kill network process: permission denied) for podup, and for docker-compose on the Podman socket. That comes from the host's AppArmorpastaprofile refusing a signal from the Podman service, and it is unrelated to this change. I am tracking it separately.