2015-07-29 14:25:56 -04:00
// +build linux freebsd
2015-04-24 18:36:11 -04:00
package daemon
import (
2015-05-15 16:05:35 -04:00
"net"
2015-04-24 18:36:11 -04:00
"github.com/docker/docker/opts"
flag "github.com/docker/docker/pkg/mflag"
2015-12-21 15:06:46 -05:00
runconfigopts "github.com/docker/docker/runconfig/opts"
"github.com/docker/go-units"
2015-04-24 18:36:11 -04:00
)
var (
defaultPidFile = "/var/run/docker.pid"
defaultGraph = "/var/lib/docker"
2015-05-26 19:17:33 -04:00
defaultExec = "native"
2015-04-24 18:36:11 -04:00
)
// Config defines the configuration of a docker daemon.
2015-12-10 18:35:10 -05:00
// It includes json tags to deserialize configuration from a file
// using the same names that the flags in the command line uses.
2015-04-24 18:36:11 -04:00
type Config struct {
CommonConfig
// Fields below here are platform specific.
2015-05-15 16:05:35 -04:00
2015-12-10 18:35:10 -05:00
CorsHeaders string ` json:"api-cors-headers,omitempty" `
EnableCors bool ` json:"api-enable-cors,omitempty" `
EnableSelinuxSupport bool ` json:"selinux-enabled,omitempty" `
RemappedRoot string ` json:"userns-remap,omitempty" `
SocketGroup string ` json:"group,omitempty" `
CgroupParent string ` json:"cgroup-parent,omitempty" `
Ulimits map [ string ] * units . Ulimit ` json:"default-ulimits,omitempty" `
2015-04-24 18:36:11 -04:00
}
2015-05-15 16:05:35 -04:00
// bridgeConfig stores all the bridge driver specific
// configuration.
type bridgeConfig struct {
2016-01-25 16:30:33 -05:00
EnableIPv6 bool ` json:"ipv6,omitempty" `
EnableIPTables bool ` json:"iptables,omitempty" `
EnableIPForward bool ` json:"ip-forward,omitempty" `
EnableIPMasq bool ` json:"ip-mask,omitempty" `
EnableUserlandProxy bool ` json:"userland-proxy,omitempty" `
DefaultIP net . IP ` json:"ip,omitempty" `
Iface string ` json:"bridge,omitempty" `
IP string ` json:"bip,omitempty" `
FixedCIDR string ` json:"fixed-cidr,omitempty" `
FixedCIDRv6 string ` json:"fixed-cidr-v6,omitempty" `
DefaultGatewayIPv4 net . IP ` json:"default-gateway,omitempty" `
DefaultGatewayIPv6 net . IP ` json:"default-gateway-v6,omitempty" `
InterContainerCommunication bool ` json:"icc,omitempty" `
2015-05-15 16:05:35 -04:00
}
2015-04-24 18:36:11 -04:00
// InstallFlags adds command-line options to the top-level flag parser for
// the current process.
// Subsequent calls to `flag.Parse` will populate config with values parsed
// from the command-line.
2015-05-05 00:18:28 -04:00
func ( config * Config ) InstallFlags ( cmd * flag . FlagSet , usageFn func ( string ) string ) {
2015-04-24 18:36:11 -04:00
// First handle install flags which are consistent cross-platform
2015-05-05 00:18:28 -04:00
config . InstallCommonFlags ( cmd , usageFn )
2015-04-24 18:36:11 -04:00
// Then platform-specific install flags
2015-05-05 00:18:28 -04:00
cmd . BoolVar ( & config . EnableSelinuxSupport , [ ] string { "-selinux-enabled" } , false , usageFn ( "Enable selinux support" ) )
cmd . StringVar ( & config . SocketGroup , [ ] string { "G" , "-group" } , "docker" , usageFn ( "Group for the unix socket" ) )
2015-12-21 15:06:46 -05:00
config . Ulimits = make ( map [ string ] * units . Ulimit )
cmd . Var ( runconfigopts . NewUlimitOpt ( & config . Ulimits ) , [ ] string { "-default-ulimit" } , usageFn ( "Set default ulimits for containers" ) )
2016-01-25 16:30:33 -05:00
cmd . BoolVar ( & config . bridgeConfig . EnableIPTables , [ ] string { "#iptables" , "-iptables" } , true , usageFn ( "Enable addition of iptables rules" ) )
cmd . BoolVar ( & config . bridgeConfig . EnableIPForward , [ ] string { "#ip-forward" , "-ip-forward" } , true , usageFn ( "Enable net.ipv4.ip_forward" ) )
cmd . BoolVar ( & config . bridgeConfig . EnableIPMasq , [ ] string { "-ip-masq" } , true , usageFn ( "Enable IP masquerading" ) )
cmd . BoolVar ( & config . bridgeConfig . EnableIPv6 , [ ] string { "-ipv6" } , false , usageFn ( "Enable IPv6 networking" ) )
cmd . StringVar ( & config . bridgeConfig . IP , [ ] string { "#bip" , "-bip" } , "" , usageFn ( "Specify network bridge IP" ) )
cmd . StringVar ( & config . bridgeConfig . Iface , [ ] string { "b" , "-bridge" } , "" , usageFn ( "Attach containers to a network bridge" ) )
cmd . StringVar ( & config . bridgeConfig . FixedCIDR , [ ] string { "-fixed-cidr" } , "" , usageFn ( "IPv4 subnet for fixed IPs" ) )
cmd . StringVar ( & config . bridgeConfig . FixedCIDRv6 , [ ] string { "-fixed-cidr-v6" } , "" , usageFn ( "IPv6 subnet for fixed IPs" ) )
cmd . Var ( opts . NewIPOpt ( & config . bridgeConfig . DefaultGatewayIPv4 , "" ) , [ ] string { "-default-gateway" } , usageFn ( "Container default gateway IPv4 address" ) )
cmd . Var ( opts . NewIPOpt ( & config . bridgeConfig . DefaultGatewayIPv6 , "" ) , [ ] string { "-default-gateway-v6" } , usageFn ( "Container default gateway IPv6 address" ) )
cmd . BoolVar ( & config . bridgeConfig . InterContainerCommunication , [ ] string { "#icc" , "-icc" } , true , usageFn ( "Enable inter-container communication" ) )
cmd . Var ( opts . NewIPOpt ( & config . bridgeConfig . DefaultIP , "0.0.0.0" ) , [ ] string { "#ip" , "-ip" } , usageFn ( "Default IP when binding container ports" ) )
cmd . BoolVar ( & config . bridgeConfig . EnableUserlandProxy , [ ] string { "-userland-proxy" } , true , usageFn ( "Use userland proxy for loopback traffic" ) )
2015-07-16 17:14:58 -04:00
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" ) )
cmd . StringVar ( & config . CorsHeaders , [ ] string { "-api-cors-header" } , "" , usageFn ( "Set CORS headers in the remote API" ) )
2016-01-06 16:59:01 -05:00
cmd . StringVar ( & config . CgroupParent , [ ] string { "-cgroup-parent" } , "" , usageFn ( "Set parent cgroup for all containers" ) )
2016-01-07 22:43:11 -05:00
cmd . StringVar ( & config . RemappedRoot , [ ] string { "-userns-remap" } , "" , usageFn ( "User/Group setting for user namespaces" ) )
2015-10-08 11:51:41 -04:00
config . attachExperimentalFlags ( cmd , usageFn )
2015-04-24 18:36:11 -04:00
}