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  }