@@ -2,6 +2,7 @@ package daemon
2
2
3
3
import (
4
4
"io"
5
+ "runtime"
5
6
6
7
"github.com/Sirupsen/logrus"
7
8
"github.com/docker/distribution/reference"
@@ -39,7 +40,7 @@ func (rl *releaseableLayer) Mount() (string, error) {
39
40
return rl .rwLayer .Mount ("" )
40
41
}
41
42
42
- func (rl * releaseableLayer ) Commit () (builder.ReleaseableLayer , error ) {
43
+ func (rl * releaseableLayer ) Commit (platform string ) (builder.ReleaseableLayer , error ) {
43
44
var chainID layer.ChainID
44
45
if rl .roLayer != nil {
45
46
chainID = rl .roLayer .ChainID ()
@@ -50,7 +51,7 @@ func (rl *releaseableLayer) Commit() (builder.ReleaseableLayer, error) {
50
51
return nil , err
51
52
}
52
53
53
- newLayer , err := rl .layerStore .Register (stream , chainID )
54
+ newLayer , err := rl .layerStore .Register (stream , chainID , layer . Platform ( platform ) )
54
55
if err != nil {
55
56
return nil , err
56
57
}
@@ -139,7 +140,7 @@ func (daemon *Daemon) pullForBuilder(ctx context.Context, name string, authConfi
139
140
// leaking of layers.
140
141
func (daemon * Daemon ) GetImageAndReleasableLayer (ctx context.Context , refOrID string , opts backend.GetImageAndLayerOptions ) (builder.Image , builder.ReleaseableLayer , error ) {
141
142
if refOrID == "" {
142
- layer , err := newReleasableLayerForImage (nil , daemon .layerStore )
143
+ layer , err := newReleasableLayerForImage (nil , daemon .stores [ opts . Platform ]. layerStore )
143
144
return nil , layer , err
144
145
}
145
146
@@ -163,19 +164,22 @@ func (daemon *Daemon) GetImageAndReleasableLayer(ctx context.Context, refOrID st
163
164
// CreateImage creates a new image by adding a config and ID to the image store.
164
165
// This is similar to LoadImage() except that it receives JSON encoded bytes of
165
166
// an image instead of a tar archive.
166
- func (daemon * Daemon ) CreateImage (config []byte , parent string ) (builder.Image , error ) {
167
- id , err := daemon .imageStore .Create (config )
167
+ func (daemon * Daemon ) CreateImage (config []byte , parent string , platform string ) (builder.Image , error ) {
168
+ if platform == "" {
169
+ platform = runtime .GOOS
170
+ }
171
+ id , err := daemon .stores [platform ].imageStore .Create (config )
168
172
if err != nil {
169
173
return nil , errors .Wrapf (err , "failed to create image" )
170
174
}
171
175
172
176
if parent != "" {
173
- if err := daemon .imageStore .SetParent (id , image .ID (parent )); err != nil {
177
+ if err := daemon .stores [ platform ]. imageStore .SetParent (id , image .ID (parent )); err != nil {
174
178
return nil , errors .Wrapf (err , "failed to set parent %s" , parent )
175
179
}
176
180
}
177
181
178
- return daemon .imageStore .Get (id )
182
+ return daemon .stores [ platform ]. imageStore .Get (id )
179
183
}
180
184
181
185
// IDMappings returns uid/gid mappings for the builder
0 commit comments