Browse Source

Modprobe bridge driver r specific kernel modules

Try too modprobe bridge driverer specic modulein case
they are not loaded into the kernel.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
Jana Radhakrishnan 10 năm trước cách đây
mục cha
commit
61993ec6c2
1 tập tin đã thay đổi với 8 bổ sung0 xóa
  1. 8 0
      libnetwork/drivers/bridge/bridge.go

+ 8 - 0
libnetwork/drivers/bridge/bridge.go

@@ -3,10 +3,12 @@ package bridge
 import (
 	"errors"
 	"net"
+	"os/exec"
 	"strconv"
 	"strings"
 	"sync"
 
+	"github.com/Sirupsen/logrus"
 	"github.com/docker/libnetwork/driverapi"
 	"github.com/docker/libnetwork/ipallocator"
 	"github.com/docker/libnetwork/netlabel"
@@ -104,6 +106,12 @@ func newDriver() driverapi.Driver {
 
 // Init registers a new instance of bridge driver
 func Init(dc driverapi.DriverCallback) error {
+	// try to modprobe bridge first
+	// see gh#12177
+	if out, err := exec.Command("modprobe", "-va", "bridge", "nf_nat", "br_netfilter").Output(); err != nil {
+		logrus.Warnf("Running modprobe bridge nf_nat failed with message: %s, error: %v", out, err)
+	}
+
 	return dc.RegisterDriver(networkType, newDriver())
 }