Skip to content
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
merged 1 commit into from
May 21, 2024

Conversation

dtrudg
Copy link
Member

@dtrudg dtrudg commented May 20, 2024

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:

@dtrudg dtrudg force-pushed the issue-2934 branch 4 times, most recently from 5a4078d to 6825ca3 Compare May 20, 2024 13:43
@dtrudg 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 dtrudg marked this pull request as ready for review May 20, 2024 14:10
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
@dtrudg dtrudg merged commit 3284e2d into sylabs:main May 21, 2024
1 check passed
@dtrudg dtrudg deleted the issue-2934 branch May 21, 2024 13:55
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
@dtrudg dtrudg mentioned this pull request Jun 20, 2024
4 tasks
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
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

oci-sif: inefficent copies of oci (layout) and tarball images
2 participants