diff --git a/Makefile b/Makefile index 7d50afa7d4..db7056f7c9 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,13 @@ export DOCKER_GITCOMMIT # env vars passed through directly to Docker's build scripts # to allow things like `make KEEPBUNDLE=1 binary` easily # `project/PACKAGERS.md` have some limited documentation of some of these +# +# DOCKER_LDFLAGS can be used to pass additional parameters to -ldflags +# option of "go build". For example, a built-in graphdriver priority list +# can be changed during build time like this: +# +# make DOCKER_LDFLAGS="-X github.com/docker/docker/daemon/graphdriver.priority=overlay2,devicemapper" dynbinary +# DOCKER_ENVS := \ -e DOCKER_CROSSPLATFORMS \ -e BUILD_APT_MIRROR \ @@ -31,6 +38,7 @@ DOCKER_ENVS := \ -e DOCKER_GITCOMMIT \ -e DOCKER_GRAPHDRIVER \ -e DOCKER_INCREMENTAL_BINARY \ + -e DOCKER_LDFLAGS \ -e DOCKER_PORT \ -e DOCKER_REMAP_ROOT \ -e DOCKER_STORAGE_OPTS \ diff --git a/daemon/graphdriver/driver.go b/daemon/graphdriver/driver.go index 68f9022e1c..7a3a0d1892 100644 --- a/daemon/graphdriver/driver.go +++ b/daemon/graphdriver/driver.go @@ -208,7 +208,9 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err // Guess for prior driver driversMap := scanPriorDrivers(config.Root) - for _, name := range priority { + list := strings.Split(priority, ",") + logrus.Debugf("[graphdriver] priority list: %v", list) + for _, name := range list { if name == "vfs" { // don't use vfs even if there is state present. continue @@ -243,7 +245,7 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err } // Check for priority drivers first - for _, name := range priority { + for _, name := range list { driver, err := getBuiltinDriver(name, config.Root, config.DriverOptions, config.UIDMaps, config.GIDMaps) if err != nil { if isDriverNotSupported(err) { diff --git a/daemon/graphdriver/driver_freebsd.go b/daemon/graphdriver/driver_freebsd.go index 53394b738d..f9fded986b 100644 --- a/daemon/graphdriver/driver_freebsd.go +++ b/daemon/graphdriver/driver_freebsd.go @@ -7,10 +7,8 @@ import ( ) var ( - // Slice of drivers that should be used in an order - priority = []string{ - "zfs", - } + // List of drivers that should be used in an order + priority = "zfs" ) // Mounted checks if the given path is mounted as the fs type diff --git a/daemon/graphdriver/driver_linux.go b/daemon/graphdriver/driver_linux.go index a2be46b53a..aa3cfc9f79 100644 --- a/daemon/graphdriver/driver_linux.go +++ b/daemon/graphdriver/driver_linux.go @@ -51,16 +51,8 @@ const ( ) var ( - // Slice of drivers that should be used in an order - priority = []string{ - "btrfs", - "zfs", - "overlay2", - "aufs", - "overlay", - "devicemapper", - "vfs", - } + // List of drivers that should be used in an order + priority = "btrfs,zfs,overlay2,aufs,overlay,devicemapper,vfs" // FsNames maps filesystem id to name of the filesystem. FsNames = map[FsMagic]string{ diff --git a/daemon/graphdriver/driver_unsupported.go b/daemon/graphdriver/driver_unsupported.go index b3f6857309..f951e7674d 100644 --- a/daemon/graphdriver/driver_unsupported.go +++ b/daemon/graphdriver/driver_unsupported.go @@ -3,10 +3,8 @@ package graphdriver var ( - // Slice of drivers that should be used in an order - priority = []string{ - "unsupported", - } + // List of drivers that should be used in an order + priority = "unsupported" ) // GetFSMagic returns the filesystem id given the path. diff --git a/daemon/graphdriver/driver_windows.go b/daemon/graphdriver/driver_windows.go index ffd30c2950..7411089b03 100644 --- a/daemon/graphdriver/driver_windows.go +++ b/daemon/graphdriver/driver_windows.go @@ -1,10 +1,8 @@ package graphdriver var ( - // Slice of drivers that should be used in order - priority = []string{ - "windowsfilter", - } + // List of drivers that should be used in order + priority = "windowsfilter" ) // GetFSMagic returns the filesystem id given the path. diff --git a/hack/make/.binary b/hack/make/.binary index ff5cbff722..b3c7a795ab 100644 --- a/hack/make/.binary +++ b/hack/make/.binary @@ -57,6 +57,7 @@ go build \ -ldflags " $LDFLAGS $LDFLAGS_STATIC_DOCKER + $DOCKER_LDFLAGS " \ $GO_PACKAGE )