builtins.go 2.1 KB

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