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