github.com/gravitational/moby@v1.13.1/daemon/config_common_unix.go (about) 1 // +build solaris linux freebsd 2 3 package daemon 4 5 import ( 6 "net" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/opts" 10 runconfigopts "github.com/docker/docker/runconfig/opts" 11 "github.com/spf13/pflag" 12 ) 13 14 // CommonUnixConfig defines configuration of a docker daemon that is 15 // common across Unix platforms. 16 type CommonUnixConfig struct { 17 ExecRoot string `json:"exec-root,omitempty"` 18 ContainerdAddr string `json:"containerd,omitempty"` 19 Runtimes map[string]types.Runtime `json:"runtimes,omitempty"` 20 DefaultRuntime string `json:"default-runtime,omitempty"` 21 } 22 23 type commonUnixBridgeConfig struct { 24 DefaultIP net.IP `json:"ip,omitempty"` 25 IP string `json:"bip,omitempty"` 26 DefaultGatewayIPv4 net.IP `json:"default-gateway,omitempty"` 27 DefaultGatewayIPv6 net.IP `json:"default-gateway-v6,omitempty"` 28 InterContainerCommunication bool `json:"icc,omitempty"` 29 } 30 31 // InstallCommonUnixFlags adds command-line options to the top-level flag parser for 32 // the current process that are common across Unix platforms. 33 func (config *Config) InstallCommonUnixFlags(flags *pflag.FlagSet) { 34 config.Runtimes = make(map[string]types.Runtime) 35 36 flags.StringVarP(&config.SocketGroup, "group", "G", "docker", "Group for the unix socket") 37 flags.StringVar(&config.bridgeConfig.IP, "bip", "", "Specify network bridge IP") 38 flags.StringVarP(&config.bridgeConfig.Iface, "bridge", "b", "", "Attach containers to a network bridge") 39 flags.StringVar(&config.bridgeConfig.FixedCIDR, "fixed-cidr", "", "IPv4 subnet for fixed IPs") 40 flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultGatewayIPv4, ""), "default-gateway", "Container default gateway IPv4 address") 41 flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultGatewayIPv6, ""), "default-gateway-v6", "Container default gateway IPv6 address") 42 flags.BoolVar(&config.bridgeConfig.InterContainerCommunication, "icc", true, "Enable inter-container communication") 43 flags.Var(opts.NewIPOpt(&config.bridgeConfig.DefaultIP, "0.0.0.0"), "ip", "Default IP when binding container ports") 44 flags.Var(runconfigopts.NewNamedRuntimeOpt("runtimes", &config.Runtimes, stockRuntimeName), "add-runtime", "Register an additional OCI compatible runtime") 45 flags.StringVar(&config.DefaultRuntime, "default-runtime", stockRuntimeName, "Default OCI runtime for containers") 46 47 } 48 49 // GetRuntime returns the runtime path and arguments for a given 50 // runtime name 51 func (config *Config) GetRuntime(name string) *types.Runtime { 52 config.reloadLock.Lock() 53 defer config.reloadLock.Unlock() 54 if rt, ok := config.Runtimes[name]; ok { 55 return &rt 56 } 57 return nil 58 } 59 60 // GetDefaultRuntimeName returns the current default runtime 61 func (config *Config) GetDefaultRuntimeName() string { 62 config.reloadLock.Lock() 63 rt := config.DefaultRuntime 64 config.reloadLock.Unlock() 65 66 return rt 67 } 68 69 // GetAllRuntimes returns a copy of the runtimes map 70 func (config *Config) GetAllRuntimes() map[string]types.Runtime { 71 config.reloadLock.Lock() 72 rts := config.Runtimes 73 config.reloadLock.Unlock() 74 return rts 75 } 76 77 // GetExecRoot returns the user configured Exec-root 78 func (config *Config) GetExecRoot() string { 79 return config.ExecRoot 80 } 81 82 // GetInitPath returns the configure docker-init path 83 func (config *Config) GetInitPath() string { 84 config.reloadLock.Lock() 85 defer config.reloadLock.Unlock() 86 if config.InitPath != "" { 87 return config.InitPath 88 } 89 return DefaultInitBinary 90 }