From ba24820284a7a87642f2b668987c1627d6977ea2 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Thu, 4 Sep 2014 09:50:58 +0400 Subject: [PATCH] Don't initialize network for 'none' mode Fixes #7837 Signed-off-by: Alexandr Morozov --- daemon/container.go | 2 +- integration-cli/docker_cli_run_test.go | 18 ++++++++++++++++++ runconfig/hostconfig.go | 4 ++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/daemon/container.go b/daemon/container.go index 2ac6cb26b6..f63bbe6370 100644 --- a/daemon/container.go +++ b/daemon/container.go @@ -434,7 +434,7 @@ func (container *Container) buildHostnameAndHostsFiles(IP string) error { func (container *Container) allocateNetwork() error { mode := container.hostConfig.NetworkMode - if container.Config.NetworkDisabled || mode.IsContainer() || mode.IsHost() { + if container.Config.NetworkDisabled || mode.IsContainer() || mode.IsHost() || mode.IsNone() { return nil } diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index 00bbb2b2ca..bfba42ee06 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -1828,3 +1828,21 @@ func TestRunCidFileCheckIDLength(t *testing.T) { deleteAllContainers() logDone("run - cidfile contains long id") } + +func TestRunNetworkNotInitializedNoneMode(t *testing.T) { + cmd := exec.Command(dockerBinary, "run", "-d", "--net=none", "busybox", "top") + out, _, err := runCommandWithOutput(cmd) + if err != nil { + t.Fatal(err) + } + id := strings.TrimSpace(out) + res, err := inspectField(id, "NetworkSettings.IPAddress") + if err != nil { + t.Fatal(err) + } + if res != "" { + t.Fatal("For 'none' mode network must not be initialized, but container got IP: %s", res) + } + deleteAllContainers() + logDone("run - network must not be initialized in 'none' mode") +} diff --git a/runconfig/hostconfig.go b/runconfig/hostconfig.go index 4dd4766e5e..cd72a1517e 100644 --- a/runconfig/hostconfig.go +++ b/runconfig/hostconfig.go @@ -19,6 +19,10 @@ func (n NetworkMode) IsContainer() bool { return len(parts) > 1 && parts[0] == "container" } +func (n NetworkMode) IsNone() bool { + return n == "none" +} + type DeviceMapping struct { PathOnHost string PathInContainer string