github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/daemon/config_unix.go (about) 1 // +build linux freebsd 2 3 package daemon 4 5 import ( 6 "net" 7 8 "github.com/docker/docker/opts" 9 flag "github.com/docker/docker/pkg/mflag" 10 "github.com/docker/docker/pkg/ulimit" 11 ) 12 13 var ( 14 defaultPidFile = "/var/run/docker.pid" 15 defaultGraph = "/var/lib/docker" 16 defaultExec = "native" 17 ) 18 19 // Config defines the configuration of a docker daemon. 20 type Config struct { 21 CommonConfig 22 23 // Fields below here are platform specific. 24 25 CorsHeaders string 26 EnableCors bool 27 EnableSelinuxSupport bool 28 RemappedRoot string 29 SocketGroup string 30 Ulimits map[string]*ulimit.Ulimit 31 } 32 33 // bridgeConfig stores all the bridge driver specific 34 // configuration. 35 type bridgeConfig struct { 36 EnableIPv6 bool 37 EnableIPTables bool 38 EnableIPForward bool 39 EnableIPMasq bool 40 EnableUserlandProxy bool 41 DefaultIP net.IP 42 Iface string 43 IP string 44 FixedCIDR string 45 FixedCIDRv6 string 46 DefaultGatewayIPv4 net.IP 47 DefaultGatewayIPv6 net.IP 48 InterContainerCommunication bool 49 } 50 51 // InstallFlags adds command-line options to the top-level flag parser for 52 // the current process. 53 // Subsequent calls to `flag.Parse` will populate config with values parsed 54 // from the command-line. 55 func (config *Config) InstallFlags(cmd *flag.FlagSet, usageFn func(string) string) { 56 // First handle install flags which are consistent cross-platform 57 config.InstallCommonFlags(cmd, usageFn) 58 59 // Then platform-specific install flags 60 cmd.BoolVar(&config.EnableSelinuxSupport, []string{"-selinux-enabled"}, false, usageFn("Enable selinux support")) 61 cmd.StringVar(&config.SocketGroup, []string{"G", "-group"}, "docker", usageFn("Group for the unix socket")) 62 config.Ulimits = make(map[string]*ulimit.Ulimit) 63 cmd.Var(opts.NewUlimitOpt(&config.Ulimits), []string{"-default-ulimit"}, usageFn("Set default ulimits for containers")) 64 cmd.BoolVar(&config.Bridge.EnableIPTables, []string{"#iptables", "-iptables"}, true, usageFn("Enable addition of iptables rules")) 65 cmd.BoolVar(&config.Bridge.EnableIPForward, []string{"#ip-forward", "-ip-forward"}, true, usageFn("Enable net.ipv4.ip_forward")) 66 cmd.BoolVar(&config.Bridge.EnableIPMasq, []string{"-ip-masq"}, true, usageFn("Enable IP masquerading")) 67 cmd.BoolVar(&config.Bridge.EnableIPv6, []string{"-ipv6"}, false, usageFn("Enable IPv6 networking")) 68 cmd.StringVar(&config.Bridge.IP, []string{"#bip", "-bip"}, "", usageFn("Specify network bridge IP")) 69 cmd.StringVar(&config.Bridge.Iface, []string{"b", "-bridge"}, "", usageFn("Attach containers to a network bridge")) 70 cmd.StringVar(&config.Bridge.FixedCIDR, []string{"-fixed-cidr"}, "", usageFn("IPv4 subnet for fixed IPs")) 71 cmd.StringVar(&config.Bridge.FixedCIDRv6, []string{"-fixed-cidr-v6"}, "", usageFn("IPv6 subnet for fixed IPs")) 72 cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultGatewayIPv4, ""), []string{"-default-gateway"}, usageFn("Container default gateway IPv4 address")) 73 cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultGatewayIPv6, ""), []string{"-default-gateway-v6"}, usageFn("Container default gateway IPv6 address")) 74 cmd.BoolVar(&config.Bridge.InterContainerCommunication, []string{"#icc", "-icc"}, true, usageFn("Enable inter-container communication")) 75 cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultIP, "0.0.0.0"), []string{"#ip", "-ip"}, usageFn("Default IP when binding container ports")) 76 cmd.BoolVar(&config.Bridge.EnableUserlandProxy, []string{"-userland-proxy"}, true, usageFn("Use userland proxy for loopback traffic")) 77 cmd.BoolVar(&config.EnableCors, []string{"#api-enable-cors", "#-api-enable-cors"}, false, usageFn("Enable CORS headers in the remote API, this is deprecated by --api-cors-header")) 78 cmd.StringVar(&config.CorsHeaders, []string{"-api-cors-header"}, "", usageFn("Set CORS headers in the remote API")) 79 80 config.attachExperimentalFlags(cmd, usageFn) 81 }