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