mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #37040 from thaJeztah/error_on_unsupported_options
overlay: do not ignore invalid storage-driver options
This commit is contained in:
commit
a79d04ae55
1 changed files with 24 additions and 0 deletions
|
@ -12,6 +12,7 @@ import (
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/docker/daemon/graphdriver"
|
"github.com/docker/docker/daemon/graphdriver"
|
||||||
"github.com/docker/docker/daemon/graphdriver/copy"
|
"github.com/docker/docker/daemon/graphdriver/copy"
|
||||||
|
@ -22,6 +23,7 @@ import (
|
||||||
"github.com/docker/docker/pkg/idtools"
|
"github.com/docker/docker/pkg/idtools"
|
||||||
"github.com/docker/docker/pkg/locker"
|
"github.com/docker/docker/pkg/locker"
|
||||||
"github.com/docker/docker/pkg/mount"
|
"github.com/docker/docker/pkg/mount"
|
||||||
|
"github.com/docker/docker/pkg/parsers"
|
||||||
"github.com/docker/docker/pkg/system"
|
"github.com/docker/docker/pkg/system"
|
||||||
"github.com/opencontainers/selinux/go-selinux/label"
|
"github.com/opencontainers/selinux/go-selinux/label"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
@ -95,6 +97,8 @@ func (d *naiveDiffDriverWithApply) ApplyDiff(id, parent string, diff io.Reader)
|
||||||
// of that. This means all child images share file (but not directory)
|
// of that. This means all child images share file (but not directory)
|
||||||
// data with the parent.
|
// data with the parent.
|
||||||
|
|
||||||
|
type overlayOptions struct{}
|
||||||
|
|
||||||
// Driver contains information about the home directory and the list of active mounts that are created using this driver.
|
// Driver contains information about the home directory and the list of active mounts that are created using this driver.
|
||||||
type Driver struct {
|
type Driver struct {
|
||||||
home string
|
home string
|
||||||
|
@ -115,6 +119,10 @@ func init() {
|
||||||
// If an overlay filesystem is not supported over an existing filesystem then
|
// If an overlay filesystem is not supported over an existing filesystem then
|
||||||
// error graphdriver.ErrIncompatibleFS is returned.
|
// error graphdriver.ErrIncompatibleFS is returned.
|
||||||
func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (graphdriver.Driver, error) {
|
func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (graphdriver.Driver, error) {
|
||||||
|
_, err := parseOptions(options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if err := supportsOverlay(); err != nil {
|
if err := supportsOverlay(); err != nil {
|
||||||
return nil, graphdriver.ErrNotSupported
|
return nil, graphdriver.ErrNotSupported
|
||||||
|
@ -176,6 +184,22 @@ func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (grap
|
||||||
return NaiveDiffDriverWithApply(d, uidMaps, gidMaps), nil
|
return NaiveDiffDriverWithApply(d, uidMaps, gidMaps), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseOptions(options []string) (*overlayOptions, error) {
|
||||||
|
o := &overlayOptions{}
|
||||||
|
for _, option := range options {
|
||||||
|
key, _, err := parsers.ParseKeyValueOpt(option)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
key = strings.ToLower(key)
|
||||||
|
switch key {
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("overlay: unknown option %s", key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return o, nil
|
||||||
|
}
|
||||||
|
|
||||||
func supportsOverlay() error {
|
func supportsOverlay() error {
|
||||||
// We can try to modprobe overlay first before looking at
|
// We can try to modprobe overlay first before looking at
|
||||||
// proc/filesystems for when overlay is supported
|
// proc/filesystems for when overlay is supported
|
||||||
|
|
Loading…
Add table
Reference in a new issue