浏览代码

Set DOCKER_DRIVER to override the choice of driver (aufs, devicemapper or dummy)

Solomon Hykes 11 年之前
父节点
当前提交
8c21d2acd3
共有 1 个文件被更改,包括 16 次插入6 次删除
  1. 16 6
      graphdriver/driver.go

+ 16 - 6
graphdriver/driver.go

@@ -3,6 +3,7 @@ package graphdriver
 import (
 	"fmt"
 	"github.com/dotcloud/docker/archive"
+	"os"
 )
 
 
@@ -45,18 +46,27 @@ func Register(name string, initFunc InitFunc) error {
 	return nil
 }
 
+func getDriver(name, home string) (Driver, error) {
+	if initFunc, exists := drivers[name]; exists {
+		return initFunc(home)
+	}
+	return nil, fmt.Errorf("No such driver: %s", name)
+}
+
 func New(root string) (Driver, error) {
 	var driver Driver
 	var lastError error
+	// Use environment variable DOCKER_DRIVER to force a choice of driver
+	if name := os.Getenv("DOCKER_DRIVER"); name != "" {
+		return getDriver(name, root)
+	}
 	// Check for priority drivers first
 	for _, name := range priority {
-		if initFunc, exists := drivers[name]; exists {
-			driver, lastError = initFunc(root)
-			if lastError != nil {
-				continue
-			}
-			return driver, nil
+		driver, lastError = getDriver(name, root)
+		if lastError != nil {
+			continue
 		}
+		return driver, nil
 	}
 
 	// Check all registered drivers if no priority driver is found