|
@@ -7,7 +7,9 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/docker/docker/api/types"
|
|
|
+ containerTypes "github.com/docker/docker/api/types/container"
|
|
|
"github.com/docker/docker/api/types/filters"
|
|
|
+ "github.com/docker/docker/integration-cli/daemon"
|
|
|
"github.com/docker/docker/integration/internal/container"
|
|
|
"github.com/docker/docker/integration/internal/request"
|
|
|
"github.com/docker/docker/pkg/jsonmessage"
|
|
@@ -51,3 +53,32 @@ func TestExportContainerAndImportImage(t *testing.T) {
|
|
|
require.NoError(t, err)
|
|
|
assert.Equal(t, jm.Status, images[0].ID)
|
|
|
}
|
|
|
+
|
|
|
+// TestExportContainerAfterDaemonRestart checks that a container
|
|
|
+// created before start of the currently running dockerd
|
|
|
+// can be exported (as reported in #36561). To satisfy this
|
|
|
+// condition, daemon restart is needed after container creation.
|
|
|
+func TestExportContainerAfterDaemonRestart(t *testing.T) {
|
|
|
+ skip.If(t, testEnv.DaemonInfo.OSType != "linux")
|
|
|
+ skip.If(t, testEnv.IsRemoteDaemon())
|
|
|
+
|
|
|
+ d := daemon.New(t, "", "dockerd", daemon.Config{})
|
|
|
+ client, err := d.NewClient()
|
|
|
+ require.NoError(t, err)
|
|
|
+
|
|
|
+ d.StartWithBusybox(t)
|
|
|
+ defer d.Stop(t)
|
|
|
+
|
|
|
+ ctx := context.Background()
|
|
|
+ cfg := containerTypes.Config{
|
|
|
+ Image: "busybox",
|
|
|
+ Cmd: []string{"top"},
|
|
|
+ }
|
|
|
+ ctr, err := client.ContainerCreate(ctx, &cfg, nil, nil, "")
|
|
|
+ require.NoError(t, err)
|
|
|
+
|
|
|
+ d.Restart(t)
|
|
|
+
|
|
|
+ _, err = client.ContainerExport(ctx, ctr.ID)
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|