config_linux.go 3.4 KB

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