Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions daemon/containerd/image_snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
)

// CreateLayer creates a new layer for a container.
func (i *ImageService) CreateLayer(ctr *container.Container, initFunc layer.MountInit) (container.RWLayer, error) {
func (i *ImageService) CreateLayer(ctr *container.Container, initFunc layer.MountInit, labels map[string]string) (container.RWLayer, error) {
var descriptor *ocispec.Descriptor
if ctr.ImageManifest != nil {
descriptor = ctr.ImageManifest
Expand All @@ -31,7 +31,7 @@ func (i *ImageService) CreateLayer(ctr *container.Container, initFunc layer.Moun
StorageOpt: ctr.HostConfig.StorageOpt,
}

return i.createLayer(descriptor, ctr.ID, rwLayerOpts, initFunc)
return i.createLayer(descriptor, ctr.ID, rwLayerOpts, initFunc, labels)
}

// CreateLayerFromImage creates a new layer from an image
Expand All @@ -41,10 +41,10 @@ func (i *ImageService) CreateLayerFromImage(img *image.Image, layerName string,
descriptor = img.Details.ManifestDescriptor
}

return i.createLayer(descriptor, layerName, rwLayerOpts, nil)
return i.createLayer(descriptor, layerName, rwLayerOpts, nil, nil)
}

func (i *ImageService) createLayer(descriptor *ocispec.Descriptor, layerName string, rwLayerOpts *layer.CreateRWLayerOpts, initFunc layer.MountInit) (container.RWLayer, error) {
func (i *ImageService) createLayer(descriptor *ocispec.Descriptor, layerName string, rwLayerOpts *layer.CreateRWLayerOpts, initFunc layer.MountInit, labels map[string]string) (container.RWLayer, error) {
ctx := context.TODO()
var parentSnapshot string
if descriptor != nil {
Expand Down Expand Up @@ -78,7 +78,11 @@ func (i *ImageService) createLayer(descriptor *ocispec.Descriptor, layerName str
if !i.idMapping.Empty() {
err = i.remapSnapshot(ctx, sn, layerName, parentSnapshot)
} else {
_, err = sn.Prepare(ctx, layerName, parentSnapshot)
sopts := []snapshots.Opt {
snapshots.WithLabels(labels),
}

_, err = sn.Prepare(ctx, layerName, parentSnapshot, sopts...)
}

if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion daemon/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ func (daemon *Daemon) create(ctx context.Context, daemonCfg *config.Config, opts
ctr.ImageManifest = imgManifest

// Set RWLayer for container after mount labels have been set
rwLayer, err := daemon.imageService.CreateLayer(ctr, setupInitLayer(daemon.idMapping.RootPair()))
rwLayer, err := daemon.imageService.CreateLayer(ctr, setupInitLayer(daemon.idMapping.RootPair()), opts.params.Config.Labels)
if err != nil {
return nil, errdefs.System(err)
}
Expand Down
2 changes: 1 addition & 1 deletion daemon/image_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ type ImageService interface {
// Layers

GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error)
CreateLayer(container *container.Container, initFunc layer.MountInit) (container.RWLayer, error)
CreateLayer(container *container.Container, initFunc layer.MountInit, labels map[string]string) (container.RWLayer, error)
CreateLayerFromImage(img *image.Image, layerName string, rwLayerOpts *layer.CreateRWLayerOpts) (container.RWLayer, error)
GetLayerByID(cid string) (container.RWLayer, error)
LayerStoreStatus() [][2]string
Expand Down
2 changes: 1 addition & 1 deletion daemon/images/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ func (i *ImageService) Children(_ context.Context, id image.ID) ([]image.ID, err
// CreateLayer creates a filesystem layer for a container.
// called from create.go
// TODO: accept an opt struct instead of container?
func (i *ImageService) CreateLayer(container *container.Container, initFunc layer.MountInit) (container.RWLayer, error) {
func (i *ImageService) CreateLayer(container *container.Container, initFunc layer.MountInit, labels map[string]string) (container.RWLayer, error) {
var img *image.Image
if container.ImageID != "" {
containerImg, err := i.imageStore.Get(container.ImageID)
Expand Down