-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: avoid redundant extraction / copies of tarballs / layouts #2935
Merged
Conversation
This file contains 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
dtrudg
force-pushed
the
issue-2934
branch
4 times, most recently
from
May 20, 2024 13:43
5a4078d
to
6825ca3
Compare
dtrudg
changed the title
fix: avoid redundant extraction / copies of OCI tarballs / layouts
fix: avoid redundant extraction / copies of tarballs / layouts
May 20, 2024
When an OCI image is already available as an OCI layout directory, or a docker tarball, ggcr can read it directly. We can avoid additionally fetching it into the cache or a temporary OCI layout directory. This saves time, disk space, and I/O. Fixes sylabs#2934
dtrudg
added a commit
to dtrudg/singularity
that referenced
this pull request
May 20, 2024
With sylabs#2935 in place we can now translate a Docker archive tarball into an OCI-SIF without creating a redundant copy of the image as a temporary OCI layout. We've previously been processing the buildkit tarball as an oci-archive, which still requires extraction to a temporary layout, as ggcr's tarball package doesn't accept an archived layout without a manifest.json. Because the buildkit output tarball includes the Docker specific manifest.json, in addition to the standard OCI layout files, it can be treated as a docker-archive - now avoiding the need for the temporary layout. Significantly reduces disk space needed by `build --oci`, and the associated I/O. Fixes sylabs#2308
wobito
approved these changes
May 21, 2024
dtrudg
added a commit
to dtrudg/singularity
that referenced
this pull request
May 21, 2024
With sylabs#2935 in place we can now translate a Docker archive tarball into an OCI-SIF without creating a redundant copy of the image as a temporary OCI layout. We've previously been processing the buildkit tarball as an oci-archive, which still requires extraction to a temporary layout, as ggcr's tarball package doesn't accept an archived layout without a manifest.json. Because the buildkit output tarball includes the Docker specific manifest.json, in addition to the standard OCI layout files, it can be treated as a docker-archive - now avoiding the need for the temporary layout. Significantly reduces disk space needed by `build --oci`, and the associated I/O. Fixes sylabs#2308
cyanezstange
pushed a commit
to cyanezstange/singularity
that referenced
this pull request
Jun 4, 2024
With sylabs#2935 in place we can now translate a Docker archive tarball into an OCI-SIF without creating a redundant copy of the image as a temporary OCI layout. We've previously been processing the buildkit tarball as an oci-archive, which still requires extraction to a temporary layout, as ggcr's tarball package doesn't accept an archived layout without a manifest.json. Because the buildkit output tarball includes the Docker specific manifest.json, in addition to the standard OCI layout files, it can be treated as a docker-archive - now avoiding the need for the temporary layout. Significantly reduces disk space needed by `build --oci`, and the associated I/O. Fixes sylabs#2308
cyanezstange
pushed a commit
to cyanezstange/singularity
that referenced
this pull request
Jun 20, 2024
With sylabs#2935 in place we can now translate a Docker archive tarball into an OCI-SIF without creating a redundant copy of the image as a temporary OCI layout. We've previously been processing the buildkit tarball as an oci-archive, which still requires extraction to a temporary layout, as ggcr's tarball package doesn't accept an archived layout without a manifest.json. Because the buildkit output tarball includes the Docker specific manifest.json, in addition to the standard OCI layout files, it can be treated as a docker-archive - now avoiding the need for the temporary layout. Significantly reduces disk space needed by `build --oci`, and the associated I/O. Fixes sylabs#2308
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.
Description of the Pull Request (PR):
When an OCI image is already available as an OCI layout directory, or a docker tarball, ggcr can read it directly. We can avoid additionally fetching it into the cache or a temporary OCI layout directory. This saves time, disk space, and I/O.
This fixes or addresses the following GitHub issues:
Before submitting a PR, make sure you have done the following:
make check
and tested this PR locally with amake test
, andmake testall
if possible (see CONTRIBUTING.md).