mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
504e67b867
Generate a hash chain involving the image configuration, layer digests, and parent image hashes. Use the digests to compute IDs for each image in a manifest, instead of using the remotely specified IDs. To avoid breaking users' caches, check for images already in the graph under old IDs, and avoid repulling an image if the version on disk under the legacy ID ends up with the same digest that was computed from the manifest for that image. When a calculated ID already exists in the graph but can't be verified, continue trying SHA256(digest) until a suitable ID is found. "save" and "load" are not changed to use a similar scheme. "load" will preserve the IDs present in the tar file. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
31 lines
981 B
Go
31 lines
981 B
Go
package graphdriver
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/docker/docker/image"
|
|
)
|
|
|
|
// NOTE: These interfaces are used for implementing specific features of the Windows
|
|
// graphdriver implementation. The current versions are a short-term solution and
|
|
// likely to change or possibly be eliminated, so avoid using them outside of the Windows
|
|
// graphdriver code.
|
|
|
|
// ImageRestorer interface allows the implementer to add a custom image to
|
|
// the graph and tagstore.
|
|
type ImageRestorer interface {
|
|
RestoreCustomImages(tagger Tagger, recorder Recorder) ([]string, error)
|
|
}
|
|
|
|
// Tagger is an interface that exposes the TagStore.Tag function without needing
|
|
// to import graph.
|
|
type Tagger interface {
|
|
Tag(repoName, tag, imageName string, force bool) error
|
|
}
|
|
|
|
// Recorder is an interface that exposes the Graph.Register and Graph.Exists
|
|
// functions without needing to import graph.
|
|
type Recorder interface {
|
|
Exists(id string) bool
|
|
Register(img image.Descriptor, layerData io.Reader) error
|
|
}
|