docker_cli_export_import_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package main
  2. import (
  3. "os"
  4. "os/exec"
  5. "strings"
  6. "github.com/docker/docker/pkg/integration/checker"
  7. "github.com/go-check/check"
  8. )
  9. // export an image and try to import it into a new one
  10. func (s *DockerSuite) TestExportContainerAndImportImage(c *check.C) {
  11. testRequires(c, DaemonIsLinux)
  12. containerID := "testexportcontainerandimportimage"
  13. dockerCmd(c, "run", "--name", containerID, "busybox", "true")
  14. out, _ := dockerCmd(c, "export", containerID)
  15. importCmd := exec.Command(dockerBinary, "import", "-", "repo/testexp:v1")
  16. importCmd.Stdin = strings.NewReader(out)
  17. out, _, err := runCommandWithOutput(importCmd)
  18. c.Assert(err, checker.IsNil, check.Commentf("failed to import image repo/testexp:v1: %s", out))
  19. cleanedImageID := strings.TrimSpace(out)
  20. c.Assert(cleanedImageID, checker.Not(checker.Equals), "", check.Commentf("output should have been an image id"))
  21. }
  22. // Used to test output flag in the export command
  23. func (s *DockerSuite) TestExportContainerWithOutputAndImportImage(c *check.C) {
  24. testRequires(c, DaemonIsLinux)
  25. containerID := "testexportcontainerwithoutputandimportimage"
  26. dockerCmd(c, "run", "--name", containerID, "busybox", "true")
  27. dockerCmd(c, "export", "--output=testexp.tar", containerID)
  28. defer os.Remove("testexp.tar")
  29. out, _, err := runCommandWithOutput(exec.Command("cat", "testexp.tar"))
  30. c.Assert(err, checker.IsNil, check.Commentf(out))
  31. importCmd := exec.Command(dockerBinary, "import", "-", "repo/testexp:v1")
  32. importCmd.Stdin = strings.NewReader(out)
  33. out, _, err = runCommandWithOutput(importCmd)
  34. c.Assert(err, checker.IsNil, check.Commentf("failed to import image repo/testexp:v1: %s", out))
  35. cleanedImageID := strings.TrimSpace(out)
  36. c.Assert(cleanedImageID, checker.Not(checker.Equals), "", check.Commentf("output should have been an image id"))
  37. }