docker / engine-api

DEPRECATED: Please see https://github.com/docker/docker/tree/master/client
Apache License 2.0
265 stars 163 forks source link

file content from CopyFromContainer #308

Open SDkie opened 8 years ago

SDkie commented 8 years ago

If I write the content to a file its adding some header and footer to the file. What is the issue?

Sample code

reader, _, err = CopyFromContainer(context.TODO(), containerId, path)
f, err = os.Create("tempFile")
n, err = io.Copy(f, reader)
prayas-stha commented 7 years ago

It is because its the tar file in the reader.

import("archive/tar")
....
reader, _, err = CopyFromContainer(context.TODO(), containerId, path)
if err != nil{
                log.Println(err.Error())
}
tr := tar.NewReader(reader)
for {
                // hdr gives you the header of the tar file
                hdr, err := tr.Next()
                if err == io.EOF {
                        // end of tar archive
                        break
                }
                if err != nil {
                        log.Fatalln(err)
                }
                buf := new(bytes.Buffer)
                buf.ReadFrom(tr)

                // You can use this wholeContent to create new file
                wholeContent := buf.String()

                fmt.Println("Whole of the string of ", hdr.Name ," is ",wholeContent)

}

This gives you the content, you can use to create files on your own. Look into https://golang.org/pkg/archive/tar/#pkg-examples