mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #10935 from coolljt0725/fix_commit
Fix docker commit make a paused container to unpaused
This commit is contained in:
		
						commit
						bd95269fb9
					
				
					 2 changed files with 39 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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()
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue