Jelajahi Sumber

fix the problem that memory-swap=-1 is not working for docker command

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Qiang Huang 10 tahun lalu
induk
melakukan
aee28e0e87
2 mengubah file dengan 21 tambahan dan 4 penghapusan
  1. 13 0
      integration-cli/docker_cli_run_test.go
  2. 8 4
      runconfig/parse.go

+ 13 - 0
integration-cli/docker_cli_run_test.go

@@ -60,6 +60,19 @@ func TestRunEchoStdoutWithMemoryLimit(t *testing.T) {
 	logDone("run - echo with memory limit")
 }
 
+// should run without memory swap
+func TestRunWithoutMemoryswapLimit(t *testing.T) {
+	runCmd := exec.Command(dockerBinary, "run", "-m", "16m", "--memory-swap", "-1", "busybox", "true")
+	out, _, err := runCommandWithOutput(runCmd)
+	if err != nil {
+		t.Fatalf("failed to run container, output: %q", out)
+	}
+
+	deleteAllContainers()
+
+	logDone("run - without memory swap limit")
+}
+
 // "test" should be printed
 func TestRunEchoStdoutWitCPULimit(t *testing.T) {
 	runCmd := exec.Command(dockerBinary, "run", "-c", "1000", "busybox", "echo", "test")

+ 8 - 4
runconfig/parse.go

@@ -140,11 +140,15 @@ func Parse(cmd *flag.FlagSet, args []string) (*Config, *HostConfig, *flag.FlagSe
 
 	var MemorySwap int64
 	if *flMemorySwap != "" {
-		parsedMemorySwap, err := units.RAMInBytes(*flMemorySwap)
-		if err != nil {
-			return nil, nil, cmd, err
+		if *flMemorySwap == "-1" {
+			MemorySwap = -1
+		} else {
+			parsedMemorySwap, err := units.RAMInBytes(*flMemorySwap)
+			if err != nil {
+				return nil, nil, cmd, err
+			}
+			MemorySwap = parsedMemorySwap
 		}
-		MemorySwap = parsedMemorySwap
 	}
 
 	var binds []string