Dockerfile - Upgrade bundled Docker to 29.7.2 in cuda13.0 - #845
Dockerfile - Upgrade bundled Docker to 29.7.2 in cuda13.0#845gusui-msft wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the CUDA 13.0 container image definition to use a newer Docker static distribution, aiming to remove critical CVEs stemming from compiled-in Go dependencies in the bundled Docker binaries.
Changes:
- Bump the pinned Docker static bundle version from
20.10.8to29.7.2. - Update the Docker version noted in the Dockerfile header comment to match the new pinned version.
Suppressed comments (1)
dockerfile/cuda13.0.dockerfile:74
- The Docker tarball is downloaded and extracted without any integrity verification. Since this PR is motivated by supply-chain CVEs, it would be safer to also verify the downloaded artifact against Docker’s published SHA256 before extracting it.
ENV DOCKER_VERSION=29.7.2
RUN TARGETARCH_HW=$(uname -m) && \
wget -q https://download.docker.com/linux/static/stable/${TARGETARCH_HW}/docker-${DOCKER_VERSION}.tgz -O docker.tgz && \
tar --extract --file docker.tgz --strip-components 1 --directory /usr/local/bin/ && \
rm docker.tgz
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #845 +/- ##
=======================================
Coverage 86.02% 86.02%
=======================================
Files 103 103
Lines 7950 7950
=======================================
Hits 6839 6839
Misses 1111 1111
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ndle Carries over the review outcome from #845: the RUN unpacks all eight binaries from the tarball into /usr/local/bin/, not only the client, so the header must not say "Docker Client".
|
Closing this in favour of #846. Per team discussion, the Docker Why. #846 replaces Nothing is lost. The 40 Critical occurrences this PR would have closed are accounted for in #846, alongside the 18 inherited from the base image. Together they are all 58 Critical on
The ROCm counterpart is handled the same way, riding along with the new Branch |
…ndle Carries over the review outcome from #845: the RUN unpacks all eight binaries from the tarball into /usr/local/bin/, not only the client, so the header must not say "Docker Client".
Description
The bundled Docker static distribution is pinned at
20.10.8, which was built with Go 1.16.6. A Trivy 0.72.0 scan ofsuperbench.azurecr.io/internal/hpc:main-cuda13.0(2026-07-15) reports 40 Critical occurrences against the eight binaries this Dockerfile unpacks into/usr/local/bin/. That is 69% of the 58 Critical findings in the image, and the largest single source of Critical findings we own.These are compiled-in Go dependencies, not installed packages, so they cannot be fixed with
aptorpip. The bundle itself has to be replaced.Docker
29.7.2(released 2026-08-05) is built with Go 1.26.5 and carries gRPCv1.82.1, which clears every CVE reported against this bundle:stdlib1.24.13, 1.25.7, 1.26.0-rc.3go1.26.5stdlib1.16.14, 1.17.7go1.26.5stdlib1.19.8, 1.20.3go1.26.5stdlib1.19.9, 1.20.4go1.26.5stdlib1.21.11, 1.22.4go1.26.5Major Revision
DOCKER_VERSIONfrom20.10.8to29.7.2indockerfile/cuda13.0.dockerfile.Minor Revision
Verification done before opening
Both architecture tarballs were downloaded from
download.docker.com/linux/static/stable/and inspected:x86_64/docker-29.7.2.tgzandaarch64/docker-29.7.2.tgzboth return 200.${TARGETARCH_HW}already resolves correctly for both.go1.26.5, on both architectures.dockerdembedsgoogle.golang.org/grpc v1.82.1.Docker version 29.7.2, build a7dcaa6.Host compatibility
SuperBench only uses the Docker client against the host daemon socket (
monitor.py,docker_base.py,runner.py,system_info.py, anddeploy.yaml, which mounts/var/run/docker.sock). There is no reference todockerd,containerd,runc,ctr, ordocker-proxyanywhere in the tree.Docker
29.3.0lowered the minimum daemon API version from v1.44 back to v1.40 (Docker 19.03), so the newer client still talks to older host daemons.docker login --username/--passwordand every subcommand we invoke are still present in 29.7.2.One behavioural note for reviewers: the v1
containerd-shimbinary no longer ships in the 29.x bundle. Nothing in this repository references it.Draft, pending
cuda13.0image builds on arm64 and amd64docker --versioninside the built image reports 29.7.2Not in this PR
rocm6.3.x.dockerfile(Docker27.5.1, 8 Critical), which is a separate PR because it is a different vendor image, different runner, and different reviewers.cuda12.9andcuda11.1.1are also built by CI and still carry20.10.8. They were not scanned, but they install the same bundle. Happy to extend this PR to them if reviewers prefer.dockerclient instead of the full bundle. That would drop 7 unused binaries and ~181 MB, but it changes image contents rather than a version string, so it is left as a follow-up.dockerfile/*.dockerfilehere, so it belongs in one change across all of them rather than only this one.linux-libc-dev,jupyter_server, Nsight), which are handled by a CUDA 13.3 base upgrade.