mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
Add support for CDI devices to docker daemon under linux
These changes add basic CDI integration to the docker daemon. A cdi driver is added to handle cdi device requests. This is gated by an experimental feature flag and is only supported on linux This change also adds a CDISpecDirs (cdi-spec-dirs) option to the config. This allows the default values of `/etc/cdi`, /var/run/cdi` to be overridden which is useful for testing. Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
@@ -61,6 +61,8 @@ func installCommonConfigFlags(conf *config.Config, flags *pflag.FlagSet) error {
|
||||
flags.StringVar(&conf.HTTPSProxy, "https-proxy", "", "HTTPS proxy URL to use for outgoing traffic")
|
||||
flags.StringVar(&conf.NoProxy, "no-proxy", "", "Comma-separated list of hosts or IP addresses for which the proxy is skipped")
|
||||
|
||||
flags.Var(opts.NewNamedListOptsRef("cdi-spec-dirs", &conf.CDISpecDirs, nil), "cdi-spec-dir", "CDI specification directories to use")
|
||||
|
||||
// Deprecated flags / options
|
||||
|
||||
flags.BoolVarP(&conf.AutoRestart, "restart", "r", true, "--restart on the daemon has been deprecated in favor of --restart policies on docker run")
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/container-orchestrated-devices/container-device-interface/pkg/cdi"
|
||||
containerddefaults "github.com/containerd/containerd/defaults"
|
||||
"github.com/docker/docker/api"
|
||||
apiserver "github.com/docker/docker/api/server"
|
||||
@@ -241,6 +242,18 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
|
||||
return errors.Wrap(err, "failed to validate authorization plugin")
|
||||
}
|
||||
|
||||
// Note that CDI is not inherrently linux-specific, there are some linux-specific assumptions / implementations in the code that
|
||||
// queries the properties of device on the host as wel as performs the injection of device nodes and their access permissions into the OCI spec.
|
||||
//
|
||||
// In order to lift this restriction the following would have to be addressed:
|
||||
// - Support needs to be added to the cdi package for injecting Windows devices: https://github.com/container-orchestrated-devices/container-device-interface/issues/28
|
||||
// - The DeviceRequests API must be extended to non-linux platforms.
|
||||
if runtime.GOOS == "linux" && cli.Config.Experimental {
|
||||
daemon.RegisterCDIDriver(
|
||||
cdi.WithSpecDirs(cli.Config.CDISpecDirs...),
|
||||
)
|
||||
}
|
||||
|
||||
cli.d = d
|
||||
|
||||
if err := startMetricsServer(cli.Config.MetricsAddress); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user