github.com/lazyboychen7/engine@v17.12.1-ce-rc2+incompatible/daemon/graphdriver/plugin.go (about) 1 package graphdriver 2 3 import ( 4 "fmt" 5 "path/filepath" 6 7 "github.com/docker/docker/pkg/plugingetter" 8 "github.com/docker/docker/plugin/v2" 9 ) 10 11 func lookupPlugin(name string, pg plugingetter.PluginGetter, config Options) (Driver, error) { 12 if !config.ExperimentalEnabled { 13 return nil, fmt.Errorf("graphdriver plugins are only supported with experimental mode") 14 } 15 pl, err := pg.Get(name, "GraphDriver", plugingetter.Acquire) 16 if err != nil { 17 return nil, fmt.Errorf("Error looking up graphdriver plugin %s: %v", name, err) 18 } 19 return newPluginDriver(name, pl, config) 20 } 21 22 func newPluginDriver(name string, pl plugingetter.CompatPlugin, config Options) (Driver, error) { 23 home := config.Root 24 if !pl.IsV1() { 25 if p, ok := pl.(*v2.Plugin); ok { 26 if p.PropagatedMount != "" { 27 home = p.PluginObj.Config.PropagatedMount 28 } 29 } 30 } 31 proxy := &graphDriverProxy{name, pl, Capabilities{}} 32 return proxy, proxy.Init(filepath.Join(home, name), config.DriverOptions, config.UIDMaps, config.GIDMaps) 33 }