diff --git a/daemon/containerd/image_builder.go b/daemon/containerd/image_builder.go index 6778194f99..e52815d82b 100644 --- a/daemon/containerd/image_builder.go +++ b/daemon/containerd/image_builder.go @@ -45,22 +45,18 @@ const imageLabelClassicBuilderParent = "org.mobyproject.image.parent" // reference or ID. Every call to GetImageAndReleasableLayer MUST call // releasableLayer.Release() to prevent leaking of layers. func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) { - if refOrID == "" { // from SCRATCH - imgOS := runtime.GOOS + if refOrID == "" { // FROM scratch if runtime.GOOS == "windows" { - imgOS = "linux" + return nil, nil, fmt.Errorf(`"FROM scratch" is not supported on Windows`) } if opts.Platform != nil { - imgOS = opts.Platform.OS - } - if err := dimage.CheckOS(imgOS); err != nil { - return nil, nil, err + if err := dimage.CheckOS(opts.Platform.OS); err != nil { + return nil, nil, err + } } return nil, &rolayer{ - key: "", c: i.client, snapshotter: i.snapshotter, - diffID: "", }, nil } diff --git a/daemon/images/image_builder.go b/daemon/images/image_builder.go index ab1072c85f..458b00db31 100644 --- a/daemon/images/image_builder.go +++ b/daemon/images/image_builder.go @@ -2,6 +2,7 @@ package images // import "github.com/docker/docker/daemon/images" import ( "context" + "fmt" "io" "runtime" @@ -199,16 +200,14 @@ Please notify the image author to correct the configuration.`, // Every call to GetImageAndReleasableLayer MUST call releasableLayer.Release() to prevent // leaking of layers. func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) { - if refOrID == "" { // ie FROM scratch - os := runtime.GOOS + if refOrID == "" { // FROM scratch if runtime.GOOS == "windows" { - os = "linux" + return nil, nil, fmt.Errorf(`"FROM scratch" is not supported on Windows`) } if opts.Platform != nil { - os = opts.Platform.OS - } - if err := image.CheckOS(os); err != nil { - return nil, nil, err + if err := image.CheckOS(opts.Platform.OS); err != nil { + return nil, nil, err + } } lyr, err := newROLayerForImage(nil, i.layerStore) return nil, lyr, err