|
@@ -39,6 +39,7 @@ import (
|
|
|
"github.com/opencontainers/runc/libcontainer/label"
|
|
|
"github.com/opencontainers/runc/libcontainer/user"
|
|
|
"github.com/opencontainers/runtime-spec/specs-go"
|
|
|
+ "github.com/vishvananda/netlink"
|
|
|
)
|
|
|
|
|
|
const (
|
|
@@ -637,11 +638,21 @@ func (daemon *Daemon) initNetworkController(config *Config, activeSandboxes map[
|
|
|
return nil, fmt.Errorf("Error creating default \"host\" network: %v", err)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // Clear stale bridge network
|
|
|
+ if n, err := controller.NetworkByName("bridge"); err == nil {
|
|
|
+ if err = n.Delete(); err != nil {
|
|
|
+ return nil, fmt.Errorf("could not delete the default bridge network: %v", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if !config.DisableBridge {
|
|
|
// Initialize default driver "bridge"
|
|
|
if err := initBridgeDriver(controller, config); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
+ } else {
|
|
|
+ removeDefaultBridgeInterface()
|
|
|
}
|
|
|
|
|
|
return controller, nil
|
|
@@ -660,12 +671,6 @@ func driverOptions(config *Config) []nwconfig.Option {
|
|
|
}
|
|
|
|
|
|
func initBridgeDriver(controller libnetwork.NetworkController, config *Config) error {
|
|
|
- if n, err := controller.NetworkByName("bridge"); err == nil {
|
|
|
- if err = n.Delete(); err != nil {
|
|
|
- return fmt.Errorf("could not delete the default bridge network: %v", err)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
bridgeName := bridge.DefaultBridgeName
|
|
|
if config.bridgeConfig.Iface != "" {
|
|
|
bridgeName = config.bridgeConfig.Iface
|
|
@@ -779,6 +784,15 @@ func initBridgeDriver(controller libnetwork.NetworkController, config *Config) e
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// Remove default bridge interface if present (--bridge=none use case)
|
|
|
+func removeDefaultBridgeInterface() {
|
|
|
+ if lnk, err := netlink.LinkByName(bridge.DefaultBridgeName); err == nil {
|
|
|
+ if err := netlink.LinkDel(lnk); err != nil {
|
|
|
+ logrus.Warnf("Failed to remove bridge interface (%s): %v", bridge.DefaultBridgeName, err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func (daemon *Daemon) getLayerInit() func(string) error {
|
|
|
return daemon.setupInitLayer
|
|
|
}
|