daemon/export.go
8031c23b
 package daemon
 
 import (
c79b9bab
 	"fmt"
8031c23b
 	"io"
 )
 
6b737752
 func (daemon *Daemon) ContainerExport(name string, out io.Writer) error {
d25a6537
 	container, err := daemon.Get(name)
 	if err != nil {
c79b9bab
 		return err
8031c23b
 	}
d25a6537
 
 	data, err := container.Export()
 	if err != nil {
c79b9bab
 		return fmt.Errorf("%s: %s", name, err)
d25a6537
 	}
 	defer data.Close()
 
 	// Stream the entire contents of the container (basically a volatile snapshot)
6b737752
 	if _, err := io.Copy(out, data); err != nil {
c79b9bab
 		return fmt.Errorf("%s: %s", name, err)
d25a6537
 	}
 	// FIXME: factor job-specific LogEvent to engine.Job.Run()
 	container.LogEvent("export")
c79b9bab
 	return nil
8031c23b
 }