diff --git a/container.go b/container.go index f068d00375..b3c139269b 100644 --- a/container.go +++ b/container.go @@ -1427,7 +1427,7 @@ func (container *Container) GetSize() (int64, int64) { return sizeRw, sizeRootfs } -func (container *Container) Copy(resource string) (archive.Archive, error) { +func (container *Container) Copy(resource string) (io.ReadCloser, error) { if err := container.Mount(); err != nil { return nil, err } @@ -1454,7 +1454,7 @@ func (container *Container) Copy(resource string) (archive.Archive, error) { if err != nil { return nil, err } - return EofReader(archive, func() { container.Unmount() }), nil + return utils.NewReadCloserWrapper(archive, container.Unmount), nil } // Returns true if the container exposes a certain port diff --git a/server.go b/server.go index 7c60f29378..440bab2bbd 100644 --- a/server.go +++ b/server.go @@ -2341,6 +2341,7 @@ func (srv *Server) ContainerCopy(job *engine.Job) engine.Status { if err != nil { return job.Error(err) } + defer data.Close() if _, err := io.Copy(job.Stdout, data); err != nil { return job.Error(err)