github.com/eikeon/docker@v1.5.0-rc4/daemon/config.go (about) 1 package daemon 2 3 import ( 4 "net" 5 6 "github.com/docker/docker/daemon/networkdriver" 7 "github.com/docker/docker/opts" 8 flag "github.com/docker/docker/pkg/mflag" 9 ) 10 11 const ( 12 defaultNetworkMtu = 1500 13 disableNetworkBridge = "none" 14 ) 15 16 // Config define the configuration of a docker daemon 17 // These are the configuration settings that you pass 18 // to the docker daemon when you launch it with say: `docker -d -e lxc` 19 // FIXME: separate runtime configuration from http api configuration 20 type Config struct { 21 Pidfile string 22 Root string 23 AutoRestart bool 24 Dns []string 25 DnsSearch []string 26 EnableIPv6 bool 27 EnableIptables bool 28 EnableIpForward bool 29 EnableIpMasq bool 30 DefaultIp net.IP 31 BridgeIface string 32 BridgeIP string 33 FixedCIDR string 34 FixedCIDRv6 string 35 InterContainerCommunication bool 36 GraphDriver string 37 GraphOptions []string 38 ExecDriver string 39 Mtu int 40 DisableNetwork bool 41 EnableSelinuxSupport bool 42 Context map[string][]string 43 TrustKeyPath string 44 Labels []string 45 } 46 47 // InstallFlags adds command-line options to the top-level flag parser for 48 // the current process. 49 // Subsequent calls to `flag.Parse` will populate config with values parsed 50 // from the command-line. 51 func (config *Config) InstallFlags() { 52 flag.StringVar(&config.Pidfile, []string{"p", "-pidfile"}, "/var/run/docker.pid", "Path to use for daemon PID file") 53 flag.StringVar(&config.Root, []string{"g", "-graph"}, "/var/lib/docker", "Path to use as the root of the Docker runtime") 54 flag.BoolVar(&config.AutoRestart, []string{"#r", "#-restart"}, true, "--restart on the daemon has been deprecated in favor of --restart policies on docker run") 55 flag.BoolVar(&config.EnableIptables, []string{"#iptables", "-iptables"}, true, "Enable Docker's addition of iptables rules") 56 flag.BoolVar(&config.EnableIpForward, []string{"#ip-forward", "-ip-forward"}, true, "Enable net.ipv4.ip_forward and IPv6 forwarding if --fixed-cidr-v6 is defined. IPv6 forwarding may interfere with your existing IPv6 configuration when using Router Advertisement.") 57 flag.BoolVar(&config.EnableIpMasq, []string{"-ip-masq"}, true, "Enable IP masquerading for bridge's IP range") 58 flag.BoolVar(&config.EnableIPv6, []string{"-ipv6"}, false, "Enable IPv6 networking") 59 flag.StringVar(&config.BridgeIP, []string{"#bip", "-bip"}, "", "Use this CIDR notation address for the network bridge's IP, not compatible with -b") 60 flag.StringVar(&config.BridgeIface, []string{"b", "-bridge"}, "", "Attach containers to a pre-existing network bridge\nuse 'none' to disable container networking") 61 flag.StringVar(&config.FixedCIDR, []string{"-fixed-cidr"}, "", "IPv4 subnet for fixed IPs (e.g. 10.20.0.0/16)\nthis subnet must be nested in the bridge subnet (which is defined by -b or --bip)") 62 flag.StringVar(&config.FixedCIDRv6, []string{"-fixed-cidr-v6"}, "", "IPv6 subnet for fixed IPs (e.g.: 2001:a02b/48)") 63 flag.BoolVar(&config.InterContainerCommunication, []string{"#icc", "-icc"}, true, "Allow unrestricted inter-container and Docker daemon host communication") 64 flag.StringVar(&config.GraphDriver, []string{"s", "-storage-driver"}, "", "Force the Docker runtime to use a specific storage driver") 65 flag.StringVar(&config.ExecDriver, []string{"e", "-exec-driver"}, "native", "Force the Docker runtime to use a specific exec driver") 66 flag.BoolVar(&config.EnableSelinuxSupport, []string{"-selinux-enabled"}, false, "Enable selinux support. SELinux does not presently support the BTRFS storage driver") 67 flag.IntVar(&config.Mtu, []string{"#mtu", "-mtu"}, 0, "Set the containers network MTU\nif no value is provided: default to the default route MTU or 1500 if no default route is available") 68 opts.IPVar(&config.DefaultIp, []string{"#ip", "-ip"}, "0.0.0.0", "Default IP address to use when binding container ports") 69 opts.ListVar(&config.GraphOptions, []string{"-storage-opt"}, "Set storage driver options") 70 // FIXME: why the inconsistency between "hosts" and "sockets"? 71 opts.IPListVar(&config.Dns, []string{"#dns", "-dns"}, "Force Docker to use specific DNS servers") 72 opts.DnsSearchListVar(&config.DnsSearch, []string{"-dns-search"}, "Force Docker to use specific DNS search domains") 73 opts.LabelListVar(&config.Labels, []string{"-label"}, "Set key=value labels to the daemon (displayed in `docker info`)") 74 } 75 76 func getDefaultNetworkMtu() int { 77 if iface, err := networkdriver.GetDefaultRouteIface(); err == nil { 78 return iface.MTU 79 } 80 return defaultNetworkMtu 81 }