stop.go 689 B

123456789101112131415161718192021222324252627282930
  1. package daemon
  2. import (
  3. "github.com/docker/docker/engine"
  4. )
  5. func (daemon *Daemon) ContainerStop(job *engine.Job) engine.Status {
  6. if len(job.Args) != 1 {
  7. return job.Errorf("Usage: %s CONTAINER\n", job.Name)
  8. }
  9. var (
  10. name = job.Args[0]
  11. t = 10
  12. )
  13. if job.EnvExists("t") {
  14. t = job.GetenvInt("t")
  15. }
  16. if container := daemon.Get(name); container != nil {
  17. if !container.IsRunning() {
  18. return job.Errorf("Container already stopped")
  19. }
  20. if err := container.Stop(int(t)); err != nil {
  21. return job.Errorf("Cannot stop container %s: %s\n", name, err)
  22. }
  23. container.LogEvent("stop")
  24. } else {
  25. return job.Errorf("No such container: %s\n", name)
  26. }
  27. return engine.StatusOK
  28. }