Fix non C volumes on Windows
Images may be created with a VOLUME stanza pointed to drive letters that are not C:. Currently, an image that has such VOLUMEs defined, will cause containerd to error out when starting a container. This change skips copying existing contents to volumes that are not C:. as an image can only hold files that are destined for the C: drive of a container. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
parent
b16b0c872d
commit
ec2bec6481
@ -97,6 +97,12 @@ func WithVolumes(volumeMounts map[string]string) containerd.NewContainerOpts {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
for host, volume := range volumeMounts {
|
for host, volume := range volumeMounts {
|
||||||
|
// On Windows, volumes may be defined as different drive letters than C:. For non-C: volumes
|
||||||
|
// we need to skip trying to copy existing contents, as an image can only hold files
|
||||||
|
// destined for volumes hosted on drive C:.
|
||||||
|
if len(volume) >= 2 && string(volume[1]) == ":" && !strings.EqualFold(string(volume[0]), "c") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
// The volume may have been defined with a C: prefix, which we can't use here.
|
// The volume may have been defined with a C: prefix, which we can't use here.
|
||||||
volume = strings.TrimPrefix(volume, "C:")
|
volume = strings.TrimPrefix(volume, "C:")
|
||||||
src, err := fs.RootPath(root, volume)
|
src, err := fs.RootPath(root, volume)
|
||||||
|
Loading…
Reference in New Issue
Block a user