Skip to content

Instantly share code, notes, and snippets.

@rpetrano
Created January 20, 2017 11:20
Show Gist options
  • Save rpetrano/84531c0783cc87093ac21dcbb9ef508e to your computer and use it in GitHub Desktop.
Save rpetrano/84531c0783cc87093ac21dcbb9ef508e to your computer and use it in GitHub Desktop.
Docker patches to support v1.10.3 on older kernels (2.6.32, Centos 6)
diff --git a/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go b/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go
index 2bb4350e9..26bc52ca4 100644
--- a/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go
+++ b/vendor/src/github.com/docker/libnetwork/drivers/bridge/bridge.go
@@ -759,26 +759,17 @@ func (d *driver) DeleteNetwork(nid string) error {
}
func addToBridge(ifaceName, bridgeName string) error {
- link, err := netlink.LinkByName(ifaceName)
+ iface, err := net.InterfaceByName(ifaceName)
if err != nil {
- return fmt.Errorf("could not find interface %s: %v", ifaceName, err)
+ return fmt.Errorf("could not find network interface %s: %v", ifaceName, err)
}
- if err = netlink.LinkSetMaster(link,
- &netlink.Bridge{LinkAttrs: netlink.LinkAttrs{Name: bridgeName}}); err != nil {
- logrus.Debugf("Failed to add %s to bridge via netlink.Trying ioctl: %v", ifaceName, err)
- iface, err := net.InterfaceByName(ifaceName)
- if err != nil {
- return fmt.Errorf("could not find network interface %s: %v", ifaceName, err)
- }
-
- master, err := net.InterfaceByName(bridgeName)
- if err != nil {
- return fmt.Errorf("could not find bridge %s: %v", bridgeName, err)
- }
- return ioctlAddToBridge(iface, master)
+ master, err := net.InterfaceByName(bridgeName)
+ if err != nil {
+ return fmt.Errorf("could not find bridge %s: %v", bridgeName, err)
}
- return nil
+
+ return ioctlAddToBridge(iface, master)
}
func setHairpinMode(link netlink.Link, enable bool) error {
diff --git a/contrib/init/sysvinit-redhat/docker b/contrib/init/sysvinit-redhat/docker
index 3f88bb52d..81515ca35 100755
--- a/contrib/init/sysvinit-redhat/docker
+++ b/contrib/init/sysvinit-redhat/docker
@@ -29,6 +29,25 @@ pidfile="/var/run/$prog.pid"
lockfile="/var/lock/subsys/$prog"
logfile="/var/log/$prog"
+cgroup=/var/lib/docker/cgroup
+cgroupfs_mount() {
+ mkdir -p "$cgroup"
+ if ! mountpoint -q "$cgroup"; then
+ mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup "$cgroup"
+ fi
+ (
+ cd "$cgroup"
+ for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
+ mkdir -p $sys
+ if ! mountpoint -q $sys; then
+ if ! mount -n -t cgroup -o $sys cgroup $sys; then
+ rmdir $sys || true
+ fi
+ fi
+ done
+ )
+}
+
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
prestart() {
@@ -38,6 +57,7 @@ prestart() {
service cgconfig start
fi
+ cgroupfs_mount
}
start() {
diff --git a/daemon/execdriver/native/template/default_template_linux.go b/daemon/execdriver/native/template/default_template_linux.go
index 073bcac9a..cee310af3 100644
--- a/daemon/execdriver/native/template/default_template_linux.go
+++ b/daemon/execdriver/native/template/default_template_linux.go
@@ -78,7 +78,7 @@ func New() *configs.Config {
},
{
Source: "cgroup",
- Destination: "/sys/fs/cgroup",
+ Destination: "/var/lib/docker/cgroup",
Device: "cgroup",
Flags: defaultMountFlags | syscall.MS_RDONLY,
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment