Skip to content

Commit

Permalink
Merge pull request moby#10935 from coolljt0725/fix_commit
Browse files Browse the repository at this point in the history
Fix docker commit make a paused container to unpaused
  • Loading branch information
crosbymichael committed Feb 24, 2015
2 parents a7cacbe + 7c7c7f8 commit bd95269
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion daemon/commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func (daemon *Daemon) ContainerCommit(job *engine.Job) engine.Status {
// Commit creates a new filesystem image from the current state of a container.
// The image can optionally be tagged into a repository
func (daemon *Daemon) Commit(container *Container, repository, tag, comment, author string, pause bool, config *runconfig.Config) (*image.Image, error) {
if pause {
if pause && !container.IsPaused() {
container.Pause()
defer container.Unpause()
}
Expand Down
38 changes: 38 additions & 0 deletions integration-cli/docker_cli_commit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,44 @@ func TestCommitWithoutPause(t *testing.T) {
logDone("commit - echo foo and commit the image with --pause=false")
}

//test commit a paused container should not unpause it after commit
func TestCommitPausedContainer(t *testing.T) {
defer deleteAllContainers()
defer unpauseAllContainers()
cmd := exec.Command(dockerBinary, "run", "-i", "-d", "busybox")
out, _, _, err := runCommandWithStdoutStderr(cmd)
if err != nil {
t.Fatalf("failed to run container: %v, output: %q", err, out)
}

cleanedContainerID := stripTrailingCharacters(out)
cmd = exec.Command(dockerBinary, "pause", cleanedContainerID)
out, _, _, err = runCommandWithStdoutStderr(cmd)
if err != nil {
t.Fatalf("failed to pause container: %v, output: %q", err, out)
}

commitCmd := exec.Command(dockerBinary, "commit", cleanedContainerID)
out, _, err = runCommandWithOutput(commitCmd)
if err != nil {
t.Fatalf("failed to commit container to image: %s, %v", out, err)
}
cleanedImageID := stripTrailingCharacters(out)
defer deleteImages(cleanedImageID)

cmd = exec.Command(dockerBinary, "inspect", "-f", "{{.State.Paused}}", cleanedContainerID)
out, _, _, err = runCommandWithStdoutStderr(cmd)
if err != nil {
t.Fatalf("failed to inspect container: %v, output: %q", err, out)
}

if !strings.Contains(out, "true") {
t.Fatalf("commit should not unpause a paused container")
}

logDone("commit - commit a paused container will not unpause it")
}

func TestCommitNewFile(t *testing.T) {
defer deleteAllContainers()

Expand Down

0 comments on commit bd95269

Please sign in to comment.