From d63582c13155dfc901043d695af3ecc48d7a8767 Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Fri, 18 Nov 2016 16:54:11 -0500 Subject: [PATCH] Allow graphdriver plugins to use v2 Currently the plugin initialization is too late for a loaded v2 plugin to be usable as a graph driver. This moves the initialization up before we create the graph driver. Signed-off-by: Brian Goff (cherry picked from commit 020b051dfb92edcb1e43cee77c881dd3e15481c0) Signed-off-by: Victor Vieux --- daemon/daemon.go | 11 +++++------ daemon/graphdriver/plugin.go | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index 44b41be38b..9de1411d5c 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -550,7 +550,12 @@ func NewDaemon(config *Config, registryService registry.Service, containerdRemot driverName = config.GraphDriver } + d.RegistryService = registryService d.PluginStore = pluginstore.NewStore(config.Root) + // Plugin system initialization should happen before restore. Do not change order. + if err := d.pluginInit(config, containerdRemote); err != nil { + return nil, err + } d.layerStore, err = layer.NewStoreFromOptions(layer.StoreOptions{ StorePath: config.Root, @@ -649,7 +654,6 @@ func NewDaemon(config *Config, registryService registry.Service, containerdRemot Type: config.LogConfig.Type, Config: config.LogConfig.Config, } - d.RegistryService = registryService d.EventsService = eventsService d.volumes = volStore d.root = config.Root @@ -668,11 +672,6 @@ func NewDaemon(config *Config, registryService registry.Service, containerdRemot return nil, err } - // Plugin system initialization should happen before restore. Do not change order. - if err := d.pluginInit(config, containerdRemote); err != nil { - return nil, err - } - if err := d.restore(); err != nil { return nil, err } diff --git a/daemon/graphdriver/plugin.go b/daemon/graphdriver/plugin.go index 6d2b85d8a1..5e519ad255 100644 --- a/daemon/graphdriver/plugin.go +++ b/daemon/graphdriver/plugin.go @@ -3,6 +3,7 @@ package graphdriver import ( "fmt" "io" + "path/filepath" "github.com/docker/docker/pkg/plugingetter" ) @@ -26,5 +27,5 @@ func lookupPlugin(name, home string, opts []string, pg plugingetter.PluginGetter func newPluginDriver(name, home string, opts []string, c pluginClient) (Driver, error) { proxy := &graphDriverProxy{name, c} - return proxy, proxy.Init(home, opts) + return proxy, proxy.Init(filepath.Join(home, name), opts) }