github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+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  }