-
Notifications
You must be signed in to change notification settings - Fork 100
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
Bad whiteout when importing in docker #254
Comments
Okay, I see the issue. Docker has a different opinion to To fix this we're going to need to come up with a way of removing any descendants within the same
|
Yeah, your reproducer works without issue on Docker 17.09. I imagine this is a fairly recent change in Docker. |
My docker is "Docker version 17.12.1-ce, build 7390fc6" on Ubuntu 18.04 |
Okay, so it was a containerd 1.0 change. |
The relevant code is called from here: |
I think the problem is here: When docker-untar sees a whiteout file it calls mknod on the original path, even if it does not have a parent, which gives an ENOTDIR in our case |
Okay, so they've started writing the internal format to the disk rather than emulating what the format tells you to do. That's definitely worrying (and weirdly non-extensible) -- and I'm also quite worried that they're going to start adding overlayfs whiteouts into their images despite this violating the OCI specification (because the new code currently supports that). How do they handle filesystems that don't use an internal format -- like (Our solution is the same though.) |
After discussing this with some other folks it has begun to look like Docker is no longer even attempting to be OCI-compatible with their image format (which is 'funny' given that "ability to easily convert from Docker images" was one of the design restrictions of the OCI image specification). But I will do my best to figure out precisely what they want us to do... |
Can you take a look at #258 which should fix the issue. |
The umoci version in question is 0.4.1
Steps to reproduce:
Docker will output the following error: "Error processing tar file(exit status 1): not a directory"
If I tar tvf the second layer, I get:
drwxr-xr-x root/root 0 2018-09-03 16:25 .
---------- 0/0 0 2018-09-03 16:25 .wh.test
---------- 0/0 0 2018-09-03 16:25 test/.wh.test
I believe test/.wh.test should not be present
The text was updated successfully, but these errors were encountered: