Bake blobfuse2 into Python runtime images for Azure Blob FUSE mounts - #3020
Open
akaila wants to merge 1 commit into
Open
Bake blobfuse2 into Python runtime images for Azure Blob FUSE mounts#3020akaila wants to merge 1 commit into
akaila wants to merge 1 commit into
Conversation
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
Adds
blobfuse2(andfuse3/fusermount3) to the Python runtime images, installed from the Microsoft package repo that this script already configures for the msodbcsql / mssql-tools packages.Motivation
We build container images (Azure ML Managed Harness "Hand" sandboxes)
FROM mcr.microsoft.com/oryx/python:*-debian-bookwormand need to BlobFuse2-mount an Azure Blob container from inside the running container to give each session a durable working directory.Today we do this with an on-demand
apt-get install blobfuse2on first mount, which adds a one-time cold-start latency (network + apt) to the first storage-backed operation. Bakingblobfuse2into the base image removes that latency entirely.We initially added the package one layer up, in our own image that derives from this one, but the owners of that layer asked us to keep it a thin mirror and pointed us upstream to Oryx — hence this PR. Since
install-dependencies.shalready wires uppackages.microsoft.comand installs sizable Microsoft tooling (msodbcsql17/msodbcsql18,mssql-tools18, unixODBC), addingblobfuse2reuses existing infrastructure and is a small, consistent addition.Change
images/runtime/python/install-dependencies.sh:--no-install-recommendskeeps the footprint minimal (blobfuse2pulls onlylibfuse3-3;fuse3provides the setuidfusermount3needed to mount inside a container).blobfuse2 --version/command -v fusermount3checks fail the image build if the package is ever unavailable, so a broken feed can't ship silently.Footprint / blast radius
We recognize this image backs many consumers, so we've scoped the change to be additive and cleaned up (
rm -rf /var/lib/apt/lists/*still runs at the very end). Installed size is small (a few MB). If you'd prefer this behind a build ARG (e.g.INSTALL_BLOBFUSE2=falseby default) or published as a separate image variant instead of the default runtime image, we're happy to rework it that way — just let us know which shape you want.Testing
blobfuse2 --versionandfusermount3presence are asserted at build time.blobfuse2is published for Debian 12 (bookworm) and Ubuntu 24.04 (noble) in the Microsoft package repo.