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