mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Use diff ids from image configuration
The diff id resolution currently relies on a stored mapping for archive digest to diff id. This mapping could be derived from the image configuration if the image configuration is available. On linux the image config is pulled in parallel and may not be available. On windows, however, it is always pulled first and can be used to supplement the stored mapping for images which may not have this mapping from being side loaded. This becomes useful when combined with side loaded foreign layers. Signed-off-by: Derek McGowan <derek@mcgstyle.net>
This commit is contained in:
parent
b61ffbfb52
commit
633f9252b8
1 changed files with 14 additions and 0 deletions
|
@ -131,6 +131,7 @@ func (p *v2Puller) pullV2Repository(ctx context.Context, ref reference.Named) (e
|
|||
|
||||
type v2LayerDescriptor struct {
|
||||
digest digest.Digest
|
||||
diffID layer.DiffID
|
||||
repoInfo *registry.RepositoryInfo
|
||||
repo distribution.Repository
|
||||
V2MetadataService metadata.V2MetadataService
|
||||
|
@ -148,6 +149,9 @@ func (ld *v2LayerDescriptor) ID() string {
|
|||
}
|
||||
|
||||
func (ld *v2LayerDescriptor) DiffID() (layer.DiffID, error) {
|
||||
if ld.diffID != "" {
|
||||
return ld.diffID, nil
|
||||
}
|
||||
return ld.V2MetadataService.GetDiffID(ld.digest)
|
||||
}
|
||||
|
||||
|
@ -575,6 +579,16 @@ func (p *v2Puller) pullSchema2(ctx context.Context, ref reference.Named, mfst *s
|
|||
if configRootFS == nil {
|
||||
return "", "", errRootFSInvalid
|
||||
}
|
||||
|
||||
if len(descriptors) != len(configRootFS.DiffIDs) {
|
||||
return "", "", errRootFSMismatch
|
||||
}
|
||||
|
||||
// Populate diff ids in descriptors to avoid downloading foreign layers
|
||||
// which have been side loaded
|
||||
for i := range descriptors {
|
||||
descriptors[i].(*v2LayerDescriptor).diffID = configRootFS.DiffIDs[i]
|
||||
}
|
||||
}
|
||||
|
||||
if p.config.DownloadManager != nil {
|
||||
|
|
Loading…
Reference in a new issue