Browse code

propagate the dockerd cgroup-parent config to buildkitd

Signed-off-by: Anda Xu <anda.xu@docker.com>

Anda Xu authored on 2018/08/15 10:40:28
Showing 4 changed files
... ...
@@ -50,10 +50,11 @@ func init() {
50 50
 
51 51
 // Opt is option struct required for creating the builder
52 52
 type Opt struct {
53
-	SessionManager    *session.Manager
54
-	Root              string
55
-	Dist              images.DistributionServices
56
-	NetworkController libnetwork.NetworkController
53
+	SessionManager      *session.Manager
54
+	Root                string
55
+	Dist                images.DistributionServices
56
+	NetworkController   libnetwork.NetworkController
57
+	DefaultCgroupParent string
57 58
 }
58 59
 
59 60
 // Builder can build using BuildKit backend
... ...
@@ -102,7 +102,7 @@ func newController(rt http.RoundTripper, opt Opt) (*control.Controller, error) {
102 102
 		return nil, err
103 103
 	}
104 104
 
105
-	exec, err := newExecutor(root, opt.NetworkController)
105
+	exec, err := newExecutor(root, opt.DefaultCgroupParent, opt.NetworkController)
106 106
 	if err != nil {
107 107
 		return nil, err
108 108
 	}
... ...
@@ -19,15 +19,16 @@ import (
19 19
 
20 20
 const networkName = "bridge"
21 21
 
22
-func newExecutor(root string, net libnetwork.NetworkController) (executor.Executor, error) {
22
+func newExecutor(root, cgroupParent string, net libnetwork.NetworkController) (executor.Executor, error) {
23 23
 	networkProviders := map[pb.NetMode]network.Provider{
24 24
 		pb.NetMode_UNSET: &bridgeProvider{NetworkController: net},
25 25
 		pb.NetMode_HOST:  network.NewHostProvider(),
26 26
 		pb.NetMode_NONE:  network.NewNoneProvider(),
27 27
 	}
28 28
 	return runcexecutor.New(runcexecutor.Opt{
29
-		Root:              filepath.Join(root, "executor"),
30
-		CommandCandidates: []string{"docker-runc", "runc"},
29
+		Root:                filepath.Join(root, "executor"),
30
+		CommandCandidates:   []string{"docker-runc", "runc"},
31
+		DefaultCgroupParent: cgroupParent,
31 32
 	}, networkProviders)
32 33
 }
33 34
 
... ...
@@ -284,11 +284,23 @@ func newRouterOptions(config *config.Config, daemon *daemon.Daemon) (routerOptio
284 284
 	if err != nil {
285 285
 		return opts, err
286 286
 	}
287
+	cgroupParent := "docker"
288
+	useSystemd := daemon.UsingSystemd(config)
289
+	if useSystemd {
290
+		cgroupParent = "system.slice"
291
+	}
292
+	if config.CgroupParent != "" {
293
+		cgroupParent = config.CgroupParent
294
+	}
295
+	if useSystemd {
296
+		cgroupParent = cgroupParent + ":" + "docker" + ":"
297
+	}
287 298
 	bk, err := buildkit.New(buildkit.Opt{
288
-		SessionManager:    sm,
289
-		Root:              filepath.Join(config.Root, "buildkit"),
290
-		Dist:              daemon.DistributionServices(),
291
-		NetworkController: daemon.NetworkController(),
299
+		SessionManager:      sm,
300
+		Root:                filepath.Join(config.Root, "buildkit"),
301
+		Dist:                daemon.DistributionServices(),
302
+		NetworkController:   daemon.NetworkController(),
303
+		DefaultCgroupParent: cgroupParent,
292 304
 	})
293 305
 	if err != nil {
294 306
 		return opts, err