Merge pull request #43982 from thaJeztah/daemon_remove_graphdriver_field

ImageService: rename GraphDriverName to StorageDriver, remove daemon.graphdriver
This commit is contained in:
Tianon Gravi 2022-08-19 13:08:36 -07:00 committed by GitHub
commit 464882e398
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 27 deletions

View File

@ -154,7 +154,7 @@ func (daemon *Daemon) newContainer(name string, operatingSystem string, config *
base.ImageID = imgID base.ImageID = imgID
base.NetworkSettings = &network.Settings{IsAnonymousEndpoint: noExplicitName} base.NetworkSettings = &network.Settings{IsAnonymousEndpoint: noExplicitName}
base.Name = name base.Name = name
base.Driver = daemon.imageService.GraphDriverName() base.Driver = daemon.imageService.StorageDriver()
base.OS = operatingSystem base.OS = operatingSystem
return base, err return base, err
} }

View File

@ -78,10 +78,9 @@ func (i *ImageService) Cleanup() error {
return nil return nil
} }
// GraphDriverName returns the name of the graph drvier // StorageDriver returns the name of the default storage-driver (snapshotter)
// moved from Daemon.GraphDriverName, used by: // used by the ImageService.
// - newContainer func (i *ImageService) StorageDriver() string {
func (i *ImageService) GraphDriverName() string {
return "" return ""
} }

View File

@ -89,7 +89,6 @@ type Daemon struct {
sysInfo *sysinfo.SysInfo sysInfo *sysinfo.SysInfo
shutdown bool shutdown bool
idMapping idtools.IdentityMapping idMapping idtools.IdentityMapping
graphDriver string // TODO: move graphDriver field to an InfoService
PluginStore *plugin.Store // TODO: remove PluginStore *plugin.Store // TODO: remove
pluginManager *plugin.Manager pluginManager *plugin.Manager
linkIndex *linkIndex linkIndex *linkIndex
@ -239,7 +238,7 @@ func (daemon *Daemon) restore() error {
log.WithError(err).Error("failed to load container") log.WithError(err).Error("failed to load container")
return return
} }
if c.Driver != daemon.graphDriver { if c.Driver != daemon.imageService.StorageDriver() {
// Ignore the container if it wasn't created with the current storage-driver // Ignore the container if it wasn't created with the current storage-driver
log.Debugf("not restoring container because it was created with another storage driver (%s)", c.Driver) log.Debugf("not restoring container because it was created with another storage driver (%s)", c.Driver)
return return
@ -834,18 +833,19 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
} }
} }
var graphDriver string
if isWindows { if isWindows {
// On Windows we don't support the environment variable, or a user supplied graphdriver // On Windows we don't support the environment variable, or a user supplied graphdriver
d.graphDriver = "windowsfilter" graphDriver = "windowsfilter"
} else { } else {
// Unix platforms however run a single graphdriver for all containers, and it can // Unix platforms however run a single graphdriver for all containers, and it can
// be set through an environment variable, a daemon start parameter, or chosen through // be set through an environment variable, a daemon start parameter, or chosen through
// initialization of the layerstore through driver priority order for example. // initialization of the layerstore through driver priority order for example.
if drv := os.Getenv("DOCKER_DRIVER"); drv != "" { if drv := os.Getenv("DOCKER_DRIVER"); drv != "" {
d.graphDriver = drv graphDriver = drv
logrus.Infof("Setting the storage driver from the $DOCKER_DRIVER environment variable (%s)", drv) logrus.Infof("Setting the storage driver from the $DOCKER_DRIVER environment variable (%s)", drv)
} else { } else {
d.graphDriver = config.GraphDriver // May still be empty. Layerstore init determines instead. graphDriver = config.GraphDriver // May still be empty. Layerstore init determines instead.
} }
} }
@ -941,7 +941,7 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
layerStore, err := layer.NewStoreFromOptions(layer.StoreOptions{ layerStore, err := layer.NewStoreFromOptions(layer.StoreOptions{
Root: config.Root, Root: config.Root,
MetadataStorePathTemplate: filepath.Join(config.Root, "image", "%s", "layerdb"), MetadataStorePathTemplate: filepath.Join(config.Root, "image", "%s", "layerdb"),
GraphDriver: d.graphDriver, GraphDriver: graphDriver,
GraphDriverOptions: config.GraphOptions, GraphDriverOptions: config.GraphOptions,
IDMapping: idMapping, IDMapping: idMapping,
PluginGetter: d.PluginStore, PluginGetter: d.PluginStore,
@ -951,16 +951,13 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
return nil, err return nil, err
} }
// As layerstore initialization may set the driver
d.graphDriver = layerStore.DriverName()
// Configure and validate the kernels security support. Note this is a Linux/FreeBSD // Configure and validate the kernels security support. Note this is a Linux/FreeBSD
// operation only, so it is safe to pass *just* the runtime OS graphdriver. // operation only, so it is safe to pass *just* the runtime OS graphdriver.
if err := configureKernelSecuritySupport(config, d.graphDriver); err != nil { if err := configureKernelSecuritySupport(config, layerStore.DriverName()); err != nil {
return nil, err return nil, err
} }
imageRoot := filepath.Join(config.Root, "image", d.graphDriver) imageRoot := filepath.Join(config.Root, "image", layerStore.DriverName())
d.volumes, err = volumesservice.NewVolumeService(config.Root, d.PluginStore, rootIDs, d) d.volumes, err = volumesservice.NewVolumeService(config.Root, d.PluginStore, rootIDs, d)
if err != nil { if err != nil {
@ -1125,7 +1122,7 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
logrus.WithFields(logrus.Fields{ logrus.WithFields(logrus.Fields{
"version": dockerversion.Version, "version": dockerversion.Version,
"commit": dockerversion.GitCommit, "commit": dockerversion.GitCommit,
"graphdriver": d.graphDriver, "graphdriver": d.ImageService().StorageDriver(),
}).Info("Docker daemon") }).Info("Docker daemon")
return d, nil return d, nil

View File

@ -72,6 +72,6 @@ type ImageService interface {
DistributionServices() images.DistributionServices DistributionServices() images.DistributionServices
Children(id image.ID) []image.ID Children(id image.ID) []image.ID
Cleanup() error Cleanup() error
GraphDriverName() string StorageDriver() string
UpdateConfig(maxDownloads, maxUploads int) UpdateConfig(maxDownloads, maxUploads int)
} }

View File

@ -172,10 +172,8 @@ func (i *ImageService) Cleanup() error {
return nil return nil
} }
// GraphDriverName returns the name of the graph drvier // StorageDriver returns the name of the storage driver used by the ImageService.
// moved from Daemon.GraphDriverName, used by: func (i *ImageService) StorageDriver() string {
// - newContainer
func (i *ImageService) GraphDriverName() string {
return i.layerStore.DriverName() return i.layerStore.DriverName()
} }

View File

@ -120,18 +120,18 @@ func (daemon *Daemon) SystemVersion() types.Version {
} }
func (daemon *Daemon) fillDriverInfo(v *types.Info) { func (daemon *Daemon) fillDriverInfo(v *types.Info) {
v.Driver = daemon.imageService.StorageDriver()
v.DriverStatus = daemon.imageService.LayerStoreStatus()
const warnMsg = ` const warnMsg = `
WARNING: The %s storage-driver is deprecated, and will be removed in a future release. WARNING: The %s storage-driver is deprecated, and will be removed in a future release.
Refer to the documentation for more information: https://docs.docker.com/go/storage-driver/` Refer to the documentation for more information: https://docs.docker.com/go/storage-driver/`
switch daemon.graphDriver { switch v.Driver {
case "aufs", "devicemapper", "overlay": case "aufs", "devicemapper", "overlay":
v.Warnings = append(v.Warnings, fmt.Sprintf(warnMsg, daemon.graphDriver)) v.Warnings = append(v.Warnings, fmt.Sprintf(warnMsg, v.Driver))
} }
v.Driver = daemon.graphDriver
v.DriverStatus = daemon.imageService.LayerStoreStatus()
fillDriverWarnings(v) fillDriverWarnings(v)
} }