github.com/mheon/docker@v0.11.2-0.20150922122814-44f47903a831/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  // These are the configuration settings that you pass
    21  // to the docker daemon when you launch it with say: `docker daemon -e lxc`
    22  type Config struct {
    23  	CommonConfig
    24  
    25  	// Fields below here are platform specific.
    26  
    27  	CorsHeaders          string
    28  	EnableCors           bool
    29  	EnableSelinuxSupport bool
    30  	SocketGroup          string
    31  	Ulimits              map[string]*ulimit.Ulimit
    32  }
    33  
    34  // bridgeConfig stores all the bridge driver specific
    35  // configuration.
    36  type bridgeConfig struct {
    37  	EnableIPv6                  bool
    38  	EnableIPTables              bool
    39  	EnableIPForward             bool
    40  	EnableIPMasq                bool
    41  	EnableUserlandProxy         bool
    42  	DefaultIP                   net.IP
    43  	Iface                       string
    44  	IP                          string
    45  	FixedCIDR                   string
    46  	FixedCIDRv6                 string
    47  	DefaultGatewayIPv4          net.IP
    48  	DefaultGatewayIPv6          net.IP
    49  	InterContainerCommunication bool
    50  }
    51  
    52  // InstallFlags adds command-line options to the top-level flag parser for
    53  // the current process.
    54  // Subsequent calls to `flag.Parse` will populate config with values parsed
    55  // from the command-line.
    56  func (config *Config) InstallFlags(cmd *flag.FlagSet, usageFn func(string) string) {
    57  	// First handle install flags which are consistent cross-platform
    58  	config.InstallCommonFlags(cmd, usageFn)
    59  
    60  	// Then platform-specific install flags
    61  	cmd.BoolVar(&config.EnableSelinuxSupport, []string{"-selinux-enabled"}, false, usageFn("Enable selinux support"))
    62  	cmd.StringVar(&config.SocketGroup, []string{"G", "-group"}, "docker", usageFn("Group for the unix socket"))
    63  	config.Ulimits = make(map[string]*ulimit.Ulimit)
    64  	cmd.Var(opts.NewUlimitOpt(&config.Ulimits), []string{"-default-ulimit"}, usageFn("Set default ulimits for containers"))
    65  	cmd.BoolVar(&config.Bridge.EnableIPTables, []string{"#iptables", "-iptables"}, true, usageFn("Enable addition of iptables rules"))
    66  	cmd.BoolVar(&config.Bridge.EnableIPForward, []string{"#ip-forward", "-ip-forward"}, true, usageFn("Enable net.ipv4.ip_forward"))
    67  	cmd.BoolVar(&config.Bridge.EnableIPMasq, []string{"-ip-masq"}, true, usageFn("Enable IP masquerading"))
    68  	cmd.BoolVar(&config.Bridge.EnableIPv6, []string{"-ipv6"}, false, usageFn("Enable IPv6 networking"))
    69  	cmd.StringVar(&config.Bridge.IP, []string{"#bip", "-bip"}, "", usageFn("Specify network bridge IP"))
    70  	cmd.StringVar(&config.Bridge.Iface, []string{"b", "-bridge"}, "", usageFn("Attach containers to a network bridge"))
    71  	cmd.StringVar(&config.Bridge.FixedCIDR, []string{"-fixed-cidr"}, "", usageFn("IPv4 subnet for fixed IPs"))
    72  	cmd.StringVar(&config.Bridge.FixedCIDRv6, []string{"-fixed-cidr-v6"}, "", usageFn("IPv6 subnet for fixed IPs"))
    73  	cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultGatewayIPv4, ""), []string{"-default-gateway"}, usageFn("Container default gateway IPv4 address"))
    74  	cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultGatewayIPv6, ""), []string{"-default-gateway-v6"}, usageFn("Container default gateway IPv6 address"))
    75  	cmd.BoolVar(&config.Bridge.InterContainerCommunication, []string{"#icc", "-icc"}, true, usageFn("Enable inter-container communication"))
    76  	cmd.Var(opts.NewIPOpt(&config.Bridge.DefaultIP, "0.0.0.0"), []string{"#ip", "-ip"}, usageFn("Default IP when binding container ports"))
    77  	cmd.BoolVar(&config.Bridge.EnableUserlandProxy, []string{"-userland-proxy"}, true, usageFn("Use userland proxy for loopback traffic"))
    78  	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"))
    79  	cmd.StringVar(&config.CorsHeaders, []string{"-api-cors-header"}, "", usageFn("Set CORS headers in the remote API"))
    80  
    81  	config.attachExperimentalFlags(cmd, usageFn)
    82  }