123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- // +build daemon
- package main
- import (
- log "github.com/Sirupsen/logrus"
- "github.com/docker/docker/builder"
- "github.com/docker/docker/builtins"
- "github.com/docker/docker/daemon"
- _ "github.com/docker/docker/daemon/execdriver/lxc"
- _ "github.com/docker/docker/daemon/execdriver/native"
- "github.com/docker/docker/dockerversion"
- "github.com/docker/docker/engine"
- flag "github.com/docker/docker/pkg/mflag"
- "github.com/docker/docker/pkg/signal"
- "github.com/docker/docker/registry"
- )
- const CanDaemon = true
- var (
- daemonCfg = &daemon.Config{}
- registryCfg = ®istry.Options{}
- )
- func init() {
- daemonCfg.InstallFlags()
- registryCfg.InstallFlags()
- }
- func mainDaemon() {
- if flag.NArg() != 0 {
- flag.Usage()
- return
- }
- eng := engine.New()
- signal.Trap(eng.Shutdown)
- daemonCfg.TrustKeyPath = *flTrustKey
- // Load builtins
- if err := builtins.Register(eng); err != nil {
- log.Fatal(err)
- }
- // load registry service
- if err := registry.NewService(registryCfg).Install(eng); err != nil {
- log.Fatal(err)
- }
- // load the daemon in the background so we can immediately start
- // the http api so that connections don't fail while the daemon
- // is booting
- go func() {
- d, err := daemon.NewDaemon(daemonCfg, eng)
- if err != nil {
- log.Fatal(err)
- }
- log.Infof("docker daemon: %s %s; execdriver: %s; graphdriver: %s",
- dockerversion.VERSION,
- dockerversion.GITCOMMIT,
- d.ExecutionDriver().Name(),
- d.GraphDriver().String(),
- )
- if err := d.Install(eng); err != nil {
- log.Fatal(err)
- }
- b := &builder.BuilderJob{eng, d}
- b.Install()
- // after the daemon is done setting up we can tell the api to start
- // accepting connections
- if err := eng.Job("acceptconnections").Run(); err != nil {
- log.Fatal(err)
- }
- }()
- // Serve api
- job := eng.Job("serveapi", flHosts...)
- job.SetenvBool("Logging", true)
- job.SetenvBool("EnableCors", *flEnableCors)
- job.Setenv("Version", dockerversion.VERSION)
- job.Setenv("SocketGroup", *flSocketGroup)
- job.SetenvBool("Tls", *flTls)
- job.SetenvBool("TlsVerify", *flTlsVerify)
- job.Setenv("TlsCa", *flCa)
- job.Setenv("TlsCert", *flCert)
- job.Setenv("TlsKey", *flKey)
- job.SetenvBool("BufferRequests", true)
- if err := job.Run(); err != nil {
- log.Fatal(err)
- }
- }
|