changes.go 814 B

123456789101112131415161718192021222324252627282930313233
  1. package daemon // import "github.com/docker/docker/daemon"
  2. import (
  3. "errors"
  4. "time"
  5. "github.com/docker/docker/pkg/archive"
  6. )
  7. // ContainerChanges returns a list of container fs changes
  8. func (daemon *Daemon) ContainerChanges(name string) ([]archive.Change, error) {
  9. start := time.Now()
  10. container, err := daemon.GetContainer(name)
  11. if err != nil {
  12. return nil, err
  13. }
  14. if isWindows && container.IsRunning() {
  15. return nil, errors.New("Windows does not support diff of a running container")
  16. }
  17. container.Lock()
  18. defer container.Unlock()
  19. if container.RWLayer == nil {
  20. return nil, errors.New("RWLayer of container " + name + " is unexpectedly nil")
  21. }
  22. c, err := container.RWLayer.Changes()
  23. if err != nil {
  24. return nil, err
  25. }
  26. containerActions.WithValues("changes").UpdateSince(start)
  27. return c, nil
  28. }