diff --git a/daemon/oci_windows.go b/daemon/oci_windows.go index d304220335..1b53ee9104 100644 --- a/daemon/oci_windows.go +++ b/daemon/oci_windows.go @@ -46,11 +46,14 @@ func (daemon *Daemon) createSpec(c *container.Container) (*libcontainerd.Spec, e return nil, err } for _, mount := range mounts { - s.Mounts = append(s.Mounts, windowsoci.Mount{ + m := windowsoci.Mount{ Source: mount.Source, Destination: mount.Destination, - Readonly: !mount.Writable, - }) + } + if !mount.Writable { + m.Options = append(m.Options, "ro") + } + s.Mounts = append(s.Mounts, m) } // In s.Process diff --git a/libcontainerd/client_windows.go b/libcontainerd/client_windows.go index 9c750b39f9..7f8d55579f 100644 --- a/libcontainerd/client_windows.go +++ b/libcontainerd/client_windows.go @@ -129,7 +129,13 @@ func (clnt *client) Create(containerID string, checkpoint string, checkpointDir mds[i] = hcsshim.MappedDir{ HostPath: mount.Source, ContainerPath: mount.Destination, - ReadOnly: mount.Readonly} + ReadOnly: false, + } + for _, o := range mount.Options { + if strings.ToLower(o) == "ro" { + mds[i].ReadOnly = true + } + } } configuration.MappedDirectories = mds diff --git a/libcontainerd/windowsoci/oci_windows.go b/libcontainerd/windowsoci/oci_windows.go index d6de7423b5..ab70cc989c 100644 --- a/libcontainerd/windowsoci/oci_windows.go +++ b/libcontainerd/windowsoci/oci_windows.go @@ -101,11 +101,11 @@ type Mount struct { Destination string `json:"destination"` // Type specifies the mount kind. Type string `json:"type"` - // Source specifies the source path of the mount. In the case of bind mounts - // this would be the file on the host. + // Source specifies the source path of the mount. In the case of bind mounts on + // Linux based systems this would be the file on the host. Source string `json:"source"` - // Readonly specifies if the mount should be read-only - Readonly bool `json:"readonly"` + // Options are fstab style mount options. + Options []string `json:"options,omitempty"` } // HvRuntime contains settings specific to Hyper-V containers