| package config // import "github.com/docker/docker/daemon/config" | |
| import ( | |
| "context" | |
| "os" | |
| "path/filepath" | |
| "github.com/containerd/log" | |
| ) | |
| const ( | |
| // StockRuntimeName is used by the 'default-runtime' flag in dockerd as the | |
| // default value. On Windows keep this empty so the value is auto-detected | |
| // based on other options. | |
| StockRuntimeName = "" | |
| ) | |
| // BridgeConfig is meant to store all the parameters for both the bridge driver and the default bridge network. On | |
| // Windows: 1. "bridge" in this context reference the nat driver and the default nat network; 2. the nat driver has no | |
| // specific parameters, so this struct effectively just stores parameters for the default nat network. | |
| type BridgeConfig struct { | |
| DefaultBridgeConfig | |
| } | |
| type DefaultBridgeConfig struct { | |
| commonBridgeConfig | |
| // MTU is not actually used on Windows, but the --mtu option has always | |
| // been there on Windows (but ignored). | |
| MTU int `json:"mtu,omitempty"` | |
| } | |
| // Config defines the configuration of a docker daemon. | |
| // It includes json tags to deserialize configuration from a file | |
| // using the same names that the flags in the command line uses. | |
| type Config struct { | |
| CommonConfig | |
| // Fields below here are platform specific. (There are none presently | |
| // for the Windows daemon.) | |
| } | |
| // GetExecRoot returns the user configured Exec-root | |
| func (conf *Config) GetExecRoot() string { | |
| return "" | |
| } | |
| // GetInitPath returns the configured docker-init path | |
| func (conf *Config) GetInitPath() string { | |
| return "" | |
| } | |
| // IsSwarmCompatible defines if swarm mode can be enabled in this config | |
| func (conf *Config) IsSwarmCompatible() error { | |
| return nil | |
| } | |
| // ValidatePlatformConfig checks if any platform-specific configuration settings are invalid. | |
| func (conf *Config) ValidatePlatformConfig() error { | |
| if conf.MTU != 0 && conf.MTU != DefaultNetworkMtu { | |
| log.G(context.TODO()).Warn(`WARNING: MTU for the default network is not configurable on Windows, and this option will be ignored.`) | |
| } | |
| return nil | |
| } | |
| // IsRootless returns conf.Rootless on Linux but false on Windows | |
| func (conf *Config) IsRootless() bool { | |
| return false | |
| } | |
| func setPlatformDefaults(cfg *Config) error { | |
| cfg.Root = filepath.Join(os.Getenv("programdata"), "docker") | |
| cfg.ExecRoot = filepath.Join(os.Getenv("programdata"), "docker", "exec-root") | |
| cfg.Pidfile = filepath.Join(cfg.Root, "docker.pid") | |
| return nil | |
| } |