123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // +build solaris linux freebsd
- package daemon
- import (
- "net"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/opts"
- runconfigopts "github.com/docker/docker/runconfig/opts"
- "github.com/spf13/pflag"
- )
- // CommonUnixConfig defines configuration of a docker daemon that is
- // common across Unix platforms.
- type CommonUnixConfig struct {
- ExecRoot string `json:"exec-root,omitempty"`
- ContainerdAddr string `json:"containerd,omitempty"`
- Runtimes map[string]types.Runtime `json:"runtimes,omitempty"`
- DefaultRuntime string `json:"default-runtime,omitempty"`
- }
- type commonUnixBridgeConfig struct {
- DefaultIP net.IP `json:"ip,omitempty"`
- IP string `json:"bip,omitempty"`
- DefaultGatewayIPv4 net.IP `json:"default-gateway,omitempty"`
- DefaultGatewayIPv6 net.IP `json:"default-gateway-v6,omitempty"`
- InterContainerCommunication bool `json:"icc,omitempty"`
- }
- // InstallCommonUnixFlags adds command-line options to the top-level flag parser for
- // the current process that are common across Unix platforms.
- func (config *Config) InstallCommonUnixFlags(flags *pflag.FlagSet) {
- config.Runtimes = make(map[string]types.Runtime)
- flags.StringVarP(&config.SocketGroup, "group", "G", "docker", "Group for the unix socket")
- flags.StringVar(&config.bridgeConfig.IP, "bip", "", "Specify network bridge IP")
- flags.StringVarP(&config.bridgeConfig.Iface, "bridge", "b", "", "Attach containers to a network bridge")
- flags.StringVar(&config.bridgeConfig.FixedCIDR, "fixed-cidr", "", "IPv4 subnet for fixed IPs")
- flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultGatewayIPv4, ""), "default-gateway", "Container default gateway IPv4 address")
- flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultGatewayIPv6, ""), "default-gateway-v6", "Container default gateway IPv6 address")
- flags.BoolVar(&config.bridgeConfig.InterContainerCommunication, "icc", true, "Enable inter-container communication")
- flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultIP, "0.0.0.0"), "ip", "Default IP when binding container ports")
- flags.Var(runconfigopts.NewNamedRuntimeOpt("runtimes", &config.Runtimes, stockRuntimeName), "add-runtime", "Register an additional OCI compatible runtime")
- flags.StringVar(&config.DefaultRuntime, "default-runtime", stockRuntimeName, "Default OCI runtime for containers")
- }
- // GetRuntime returns the runtime path and arguments for a given
- // runtime name
- func (config *Config) GetRuntime(name string) *types.Runtime {
- config.reloadLock.Lock()
- defer config.reloadLock.Unlock()
- if rt, ok := config.Runtimes[name]; ok {
- return &rt
- }
- return nil
- }
- // GetDefaultRuntimeName returns the current default runtime
- func (config *Config) GetDefaultRuntimeName() string {
- config.reloadLock.Lock()
- rt := config.DefaultRuntime
- config.reloadLock.Unlock()
- return rt
- }
- // GetAllRuntimes returns a copy of the runtimes map
- func (config *Config) GetAllRuntimes() map[string]types.Runtime {
- config.reloadLock.Lock()
- rts := config.Runtimes
- config.reloadLock.Unlock()
- return rts
- }
- // GetExecRoot returns the user configured Exec-root
- func (config *Config) GetExecRoot() string {
- return config.ExecRoot
- }
- // GetInitPath returns the configure docker-init path
- func (config *Config) GetInitPath() string {
- config.reloadLock.Lock()
- defer config.reloadLock.Unlock()
- if config.InitPath != "" {
- return config.InitPath
- }
- return DefaultInitBinary
- }
|