Browse code

Add daemon options required by buildkit tests

Signed-off-by: Sam Whited <sam@samwhited.com>

Sam Whited authored on 2019/11/06 06:40:27
Showing 2 changed files
... ...
@@ -39,8 +39,10 @@ type nopLog struct{}
39 39
 
40 40
 func (nopLog) Logf(string, ...interface{}) {}
41 41
 
42
-const defaultDockerdBinary = "dockerd"
43
-const containerdSocket = "/var/run/docker/containerd/containerd.sock"
42
+const (
43
+	defaultDockerdBinary    = "dockerd"
44
+	defaultContainerdSocket = "/var/run/docker/containerd/containerd.sock"
45
+)
44 46
 
45 47
 var errDaemonNotStarted = errors.New("daemon not started")
46 48
 
... ...
@@ -75,6 +77,7 @@ type Daemon struct {
75 75
 	log                        LogT
76 76
 	pidFile                    string
77 77
 	args                       []string
78
+	containerdSocket           string
78 79
 
79 80
 	// swarm related field
80 81
 	swarmListenAddr string
... ...
@@ -120,11 +123,12 @@ func NewDaemon(workingDir string, ops ...Option) (*Daemon, error) {
120 120
 		storageDriver: storageDriver,
121 121
 		userlandProxy: userlandProxy,
122 122
 		// dxr stands for docker-execroot (shortened for avoiding unix(7) path length limitation)
123
-		execRoot:        filepath.Join(os.TempDir(), "dxr", id),
124
-		dockerdBinary:   defaultDockerdBinary,
125
-		swarmListenAddr: defaultSwarmListenAddr,
126
-		SwarmPort:       DefaultSwarmPort,
127
-		log:             nopLog{},
123
+		execRoot:         filepath.Join(os.TempDir(), "dxr", id),
124
+		dockerdBinary:    defaultDockerdBinary,
125
+		swarmListenAddr:  defaultSwarmListenAddr,
126
+		SwarmPort:        DefaultSwarmPort,
127
+		log:              nopLog{},
128
+		containerdSocket: defaultContainerdSocket,
128 129
 	}
129 130
 
130 131
 	for _, op := range ops {
... ...
@@ -252,17 +256,20 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
252 252
 		d.pidFile = filepath.Join(d.Folder, "docker.pid")
253 253
 	}
254 254
 
255
-	d.args = append(d.GlobalFlags,
256
-		"--containerd", containerdSocket,
257
-		"--data-root", d.Root,
255
+	d.args = append(d.GlobalFlags, "--data-root", d.Root)
256
+	if d.containerdSocket != "" {
257
+		d.args = append(d.args, "--containerd", d.containerdSocket)
258
+	}
259
+	d.args = append(d.args,
258 260
 		"--exec-root", d.execRoot,
259 261
 		"--pidfile", d.pidFile,
260 262
 		fmt.Sprintf("--userland-proxy=%t", d.userlandProxy),
261 263
 		"--containerd-namespace", d.id,
262 264
 		"--containerd-plugins-namespace", d.id+"p",
263 265
 	)
266
+
264 267
 	if d.defaultCgroupNamespaceMode != "" {
265
-		d.args = append(d.args, []string{"--default-cgroupns-mode", d.defaultCgroupNamespaceMode}...)
268
+		d.args = append(d.args, "--default-cgroupns-mode", d.defaultCgroupNamespaceMode)
266 269
 	}
267 270
 	if d.experimental {
268 271
 		d.args = append(d.args, "--experimental")
... ...
@@ -271,10 +278,10 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
271 271
 		d.args = append(d.args, "--init")
272 272
 	}
273 273
 	if !(d.UseDefaultHost || d.UseDefaultTLSHost) {
274
-		d.args = append(d.args, []string{"--host", d.Sock()}...)
274
+		d.args = append(d.args, "--host", d.Sock())
275 275
 	}
276 276
 	if root := os.Getenv("DOCKER_REMAP_ROOT"); root != "" {
277
-		d.args = append(d.args, []string{"--userns-remap", root}...)
277
+		d.args = append(d.args, "--userns-remap", root)
278 278
 	}
279 279
 
280 280
 	// If we don't explicitly set the log-level or debug flag(-D) then
... ...
@@ -7,6 +7,16 @@ import (
7 7
 // Option is used to configure a daemon.
8 8
 type Option func(*Daemon)
9 9
 
10
+// WithContainerdSocket sets the --containerd option on the daemon.
11
+// Use an empty string to remove the option.
12
+//
13
+// If unset the --containerd option will be used with a default value.
14
+func WithContainerdSocket(socket string) Option {
15
+	return func(d *Daemon) {
16
+		d.containerdSocket = socket
17
+	}
18
+}
19
+
10 20
 // WithDefaultCgroupNamespaceMode sets the default cgroup namespace mode for the daemon
11 21
 func WithDefaultCgroupNamespaceMode(mode string) Option {
12 22
 	return func(d *Daemon) {