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 OCI format, GZIP files can be smaller than 1024 bytes #511

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Maddog2050
Copy link

Here is a simple fix for the OCI format. When debugging I found that the GZIP size can be less than 1024 bytes when using containerd to pull the image.

I have tested with and without the "Use containerd for pulling and storing images" option in docker desktop and it appears to have fixed the issue. I also noticed issue #507 and downloading the example file it appears to resolve this issue also.

Fixes: #510 #507

@Rud5G
Copy link

Rud5G commented Mar 28, 2024

Tested locally on my linux-amd64 with command: dive python:3.9.19-slim-bookworm

@yoav-orca
Copy link

@wagoodman can you merge this? I'm unable to use dive lately due to this bug

// Not a gzipped entry
unwrappedReader = io.MultiReader(bytes.NewReader(buffer[:n]), tarReader)
}
// Try reading a GZIP
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fwiw, the comment above (line 97) about Docker not gzipping very small layers might have to be removed (unfortunately, GitHub doesn't let me put that comment on that line 🤷)

@jjmaestro
Copy link

@wagoodman I'm also not able to use dive because of this bug, and I'm running a compiled version of @Maddog2050's fix-oci-format branch without problem.

Is there anything blocking the PR? It would be great if you / we could get it sorted and pushed.

Thanks!

@gabrieljones
Copy link

Does anyone know if there is an easy way to ask homebrew to install @Maddog2050 's fork?

@gabrieljones
Copy link

gabrieljones commented Aug 7, 2024

Hmmm

> go install github.com/Maddog2050/dive@fix-oci-format
go: downloading github.com/Maddog2050/dive v0.0.0-20240223132924-5dd9ba6e48f9
go: github.com/Maddog2050/dive@fix-oci-format: version constraints conflict:
	github.com/Maddog2050/[email protected]: parsing go.mod:
	module declares its path as: github.com/wagoodman/dive
	        but was required as: github.com/Maddog2050/dive

Well that was a deep rabbit hole.

@jjmaestro
Copy link

jjmaestro commented Aug 10, 2024

Does anyone know if there is an easy way to ask homebrew to install @Maddog2050 's fork?

Not that I know of... I "just" did:

git clone https://github.com/Maddog2050/dive.git
git co fix-oci-format
make bootstrap
make build

Then, I alias dive=$PWD/snapshot/dive_darwin_arm64/dive. You can also make help to check the different make targets they have.

Hopefully this fix will get merged soon and we can just use the official binary! :)

@otherguy
Copy link

Fix works for me too :) I hope this gets merged soon! 🤞

@gthomson31
Copy link

Worked for me - this should get merged

@kwaegel
Copy link

kwaegel commented Sep 11, 2024

I'm running into this problem as well. Any reason the fix has been sitting around since it was approved back in March?

@Razorr1996
Copy link

Since Docker Desktop 4.34 containerd is a default image store, so a lot of people will face this problem.

https://docs.docker.com/desktop/release-notes/#4340

Fresh installations of Docker Desktop now use the containerd image store by default.

Can we merge it and release a new version? I checked this PR and it works fine.

Thank you for this utility, @wagoodman !

Copy link

@kichiandk kichiandk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix works

@coronarita1991
Copy link

Thx. 👍

@dkthezero
Copy link

work on latest Docker Desktop 4.35.1 on Mac M2! thanks~~

joschi added a commit to joschi/dive that referenced this pull request Nov 6, 2024
joschi added a commit to joschi/dive that referenced this pull request Nov 7, 2024
joschi added a commit to joschi/dive that referenced this pull request Nov 7, 2024
@solidDoWant
Copy link

If anybody is interested, I built an image for this PR and pushed it here: https://github.com/users/solidDoWant/packages/container/dive/306957285?tag=v0.12.0-1-g5dd9ba6

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.

Docker containerd format fails to parse layers with dive 0.12.0