소스 검색

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 12 년 전
부모
커밋
0f5ccf934e
1개의 변경된 파일12개의 추가작업 그리고 1개의 파일을 삭제
  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.