Update image export to support Docker format

Add manifest.json file which is used by Docker
to import images.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
This commit is contained in:
Derek McGowan
2019-04-01 15:20:46 -07:00
parent f2a20ead83
commit 4754d2aeee
9 changed files with 643 additions and 354 deletions

View File

@@ -18,13 +18,17 @@ package containerd
import (
"archive/tar"
"bytes"
"io"
"runtime"
"testing"
"github.com/containerd/containerd/images/archive"
"github.com/containerd/containerd/platforms"
)
// TestOCIExport exports testImage as a tar stream
func TestOCIExport(t *testing.T) {
// TestExport exports testImage as a tar stream
func TestExport(t *testing.T) {
// TODO: support windows
if testing.Short() || runtime.GOOS == "windows" {
t.Skip()
@@ -38,15 +42,16 @@ func TestOCIExport(t *testing.T) {
}
defer client.Close()
pulled, err := client.Fetch(ctx, testImage)
_, err = client.Fetch(ctx, testImage)
if err != nil {
t.Fatal(err)
}
exportedStream, err := client.Export(ctx, pulled.Target)
wb := bytes.NewBuffer(nil)
err = client.Export(ctx, wb, archive.WithPlatform(platforms.Default()), archive.WithImage(client.ImageService(), testImage))
if err != nil {
t.Fatal(err)
}
assertOCITar(t, exportedStream)
assertOCITar(t, bytes.NewReader(wb.Bytes()))
}
func assertOCITar(t *testing.T, r io.Reader) {