forked from appc/docker2aci
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
handle hard links and whiteouts correctly
Hard links and whiteout were not handled correctly in this scenario: - The first Docker layer contains: - file A - file B hard link to file A - The second Docker layer contains: - whiteout file A Then, the squashed ACI previously generated by docker2aci contained: - file B dangling hard link to file A Hence the bug. This patch changes: - the converting algorithm lib/common/common.go:writeACI() to generate: - First docker layer - .hidden.docker2aci.sha512-xxx (hash of the layer and file name) - file A hard link to .hidden.docker2aci.sha512-xxx - file B hard link to .hidden.docker2aci.sha512-xxx - Second docker layer - whiteout file A - the squashing algorithm lib/docker2aci.go:SquashLayers() to have two passes: - Pass one: build an in-memory map of hard links and whiteouts - Pass two: remove white-out and .hidden.docker2aci.sha512-xxx files I tested the following images from rkt/rkt#1653: - docker://albanc/busybox-hardlinks - docker://zopyx/xmldirector-plone TODO: - not optimized if there are no hard links - semantic changes on --nosquash Fixes appc#98
- Loading branch information
Showing
2 changed files
with
126 additions
and
19 deletions.
There are no files selected for viewing
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
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