Parcourir la source

Runtime: Automatically use docker-init if it exists

In some builds the main docker binary is not statically linked,
and as such not usable in as the .dockerinit binary, for those
cases we look for a separately shipped docker-init binary and
use that instead.
Alexander Larsson il y a 12 ans
Parent
commit
0f5ccf934e
1 fichiers modifiés avec 12 ajouts et 1 suppressions
  1. 12 1
      runtime.go

+ 12 - 1
runtime.go

@@ -10,6 +10,7 @@ import (
 	"os"
 	"os/exec"
 	"path"
+	"path/filepath"
 	"sort"
 	"strings"
 	"time"
@@ -42,7 +43,17 @@ type Runtime struct {
 var sysInitPath string
 
 func init() {
-	sysInitPath = utils.SelfPath()
+	selfPath := utils.SelfPath()
+
+	// If we have a separate docker-init, use that, otherwise use the
+	// main docker binary
+	dir := filepath.Dir(selfPath)
+	dockerInitPath := filepath.Join(dir, "docker-init")
+	if _, err := os.Stat(dockerInitPath); err != nil {
+		sysInitPath = selfPath
+	} else {
+		sysInitPath = dockerInitPath
+	}
 }
 
 // List returns an array of all containers registered in the runtime.