copy.go 621 B

123456789101112131415161718192021222324252627282930313233
  1. package daemon
  2. import (
  3. "io"
  4. "github.com/docker/docker/engine"
  5. )
  6. func (daemon *Daemon) ContainerCopy(job *engine.Job) engine.Status {
  7. if len(job.Args) != 2 {
  8. return job.Errorf("Usage: %s CONTAINER RESOURCE\n", job.Name)
  9. }
  10. var (
  11. name = job.Args[0]
  12. resource = job.Args[1]
  13. )
  14. if container := daemon.Get(name); container != nil {
  15. data, err := container.Copy(resource)
  16. if err != nil {
  17. return job.Error(err)
  18. }
  19. defer data.Close()
  20. if _, err := io.Copy(job.Stdout, data); err != nil {
  21. return job.Error(err)
  22. }
  23. return engine.StatusOK
  24. }
  25. return job.Errorf("No such container: %s", name)
  26. }