c8d/snapshot: Create any platform if not specified
With containerd snapshotters enabled `docker run` currently fails when creating a container from an image that doesn't have the default host platform without an explicit `--platform` selection: ``` $ docker run image:amd64 Unable to find image 'asdf:amd64' locally docker: Error response from daemon: pull access denied for asdf, repository does not exist or may require 'docker login'. See 'docker run --help'. ``` This is confusing and the graphdriver behavior is much better here, because it runs whatever platform the image has, but prints a warning: ``` $ docker run image:amd64 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested ``` This commits changes the containerd snapshotter behavior to be the same as the graphdriver. This doesn't affect container creation when platform is specified explicitly. ``` $ docker run --rm --platform linux/arm64 asdf:amd64 Unable to find image 'asdf:amd64' locally docker: Error response from daemon: pull access denied for asdf, repository does not exist or may require 'docker login'. See 'docker run --help'. ``` Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
parent
3602ba0afd
commit
fb19f1fc20
1 changed files with 1 additions and 1 deletions
|
@ -28,7 +28,7 @@ func (i *ImageService) PrepareSnapshot(ctx context.Context, id string, parentIma
|
|||
|
||||
cs := i.client.ContentStore()
|
||||
|
||||
matcher := platforms.Default()
|
||||
matcher := matchAllWithPreference(platforms.Default())
|
||||
if platform != nil {
|
||||
matcher = platforms.Only(*platform)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue