builtins.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package builtins
  2. import (
  3. "runtime"
  4. "github.com/docker/docker/api"
  5. apiserver "github.com/docker/docker/api/server"
  6. "github.com/docker/docker/daemon/networkdriver/bridge"
  7. "github.com/docker/docker/dockerversion"
  8. "github.com/docker/docker/engine"
  9. "github.com/docker/docker/events"
  10. "github.com/docker/docker/pkg/parsers/kernel"
  11. "github.com/docker/docker/registry"
  12. "github.com/docker/docker/server"
  13. )
  14. func Register(eng *engine.Engine) error {
  15. if err := daemon(eng); err != nil {
  16. return err
  17. }
  18. if err := remote(eng); err != nil {
  19. return err
  20. }
  21. if err := events.New().Install(eng); err != nil {
  22. return err
  23. }
  24. if err := eng.Register("version", dockerVersion); err != nil {
  25. return err
  26. }
  27. return registry.NewService().Install(eng)
  28. }
  29. // remote: a RESTful api for cross-docker communication
  30. func remote(eng *engine.Engine) error {
  31. if err := eng.Register("serveapi", apiserver.ServeApi); err != nil {
  32. return err
  33. }
  34. return eng.Register("acceptconnections", apiserver.AcceptConnections)
  35. }
  36. // daemon: a default execution and storage backend for Docker on Linux,
  37. // with the following underlying components:
  38. //
  39. // * Pluggable storage drivers including aufs, vfs, lvm and btrfs.
  40. // * Pluggable execution drivers including lxc and chroot.
  41. //
  42. // In practice `daemon` still includes most core Docker components, including:
  43. //
  44. // * The reference registry client implementation
  45. // * Image management
  46. // * The build facility
  47. // * Logging
  48. //
  49. // These components should be broken off into plugins of their own.
  50. //
  51. func daemon(eng *engine.Engine) error {
  52. if err := eng.Register("initserver", server.InitServer); err != nil {
  53. return err
  54. }
  55. return eng.Register("init_networkdriver", bridge.InitDriver)
  56. }
  57. // builtins jobs independent of any subsystem
  58. func dockerVersion(job *engine.Job) engine.Status {
  59. v := &engine.Env{}
  60. v.SetJson("Version", dockerversion.VERSION)
  61. v.SetJson("ApiVersion", api.APIVERSION)
  62. v.Set("GitCommit", dockerversion.GITCOMMIT)
  63. v.Set("GoVersion", runtime.Version())
  64. v.Set("Os", runtime.GOOS)
  65. v.Set("Arch", runtime.GOARCH)
  66. if kernelVersion, err := kernel.GetKernelVersion(); err == nil {
  67. v.Set("KernelVersion", kernelVersion.String())
  68. }
  69. if _, err := v.WriteTo(job.Stdout); err != nil {
  70. return job.Error(err)
  71. }
  72. return engine.StatusOK
  73. }