diff --git a/components/engine/integration-cli/docker_cli_run_test.go b/components/engine/integration-cli/docker_cli_run_test.go index 38df35ef62..d77d3bb279 100644 --- a/components/engine/integration-cli/docker_cli_run_test.go +++ b/components/engine/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") diff --git a/components/engine/runconfig/parse.go b/components/engine/runconfig/parse.go index 2d22ee2799..1455cdce3d 100644 --- a/components/engine/runconfig/parse.go +++ b/components/engine/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