From 336199a877014143bac462e98cae7f59525a0556 Mon Sep 17 00:00:00 2001 From: Daniel Norberg Date: Tue, 8 Apr 2014 14:07:02 -0400 Subject: [PATCH] net: do not create -b/--bridge specified bridge If the bridge specified using -b/--bridge doesn't exist, fail instead of attempting to create it. This is consistent with the docker documentation on -b/--bridge: "Attach containers to a pre existing network bridge". It is also less surprising in an environment where the operator expected the bridge to be properly set up before docker starts and expects docker to fail fast if the bridge was not up instead of masking this error and coming up in some potentially broken state. With this patch, docker still creates docker0 if needed and no bridge was explicitly specified. Docker-DCO-1.1-Signed-off-by: Daniel Norberg (github: danielnorberg) --- runtime/networkdriver/bridge/driver.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/runtime/networkdriver/bridge/driver.go b/runtime/networkdriver/bridge/driver.go index f7c3bc6b01..092aa9a23f 100644 --- a/runtime/networkdriver/bridge/driver.go +++ b/runtime/networkdriver/bridge/driver.go @@ -68,12 +68,20 @@ func InitDriver(job *engine.Job) engine.Status { } bridgeIface = job.Getenv("BridgeIface") + usingDefaultBridge := false if bridgeIface == "" { + usingDefaultBridge = true bridgeIface = DefaultNetworkBridge } addr, err := networkdriver.GetIfaceAddr(bridgeIface) if err != nil { + // If we're not using the default bridge, fail without trying to create it + if !usingDefaultBridge { + job.Logf("bridge not found: %s", bridgeIface) + job.Error(err) + return engine.StatusErr + } // If the iface is not found, try to create it job.Logf("creating new bridge for %s", bridgeIface) if err := createBridge(bridgeIP); err != nil {