From 226e07144e0fdda1ae9935c063b9dddddea8a4c9 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 10 Aug 2022 00:03:38 +0200 Subject: [PATCH] cmd/dockerd: initContainerd() use early return - return early if we're expecting a system-containerd - rename `initContainerD` to `initContainerd` ':) - remove .Config to reduce verbosity Signed-off-by: Sebastiaan van Stijn --- cmd/dockerd/daemon.go | 2 +- cmd/dockerd/daemon_unix.go | 54 ++++++++++++++++++----------------- cmd/dockerd/daemon_windows.go | 4 +-- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go index a93e93f5d7..496a2771b3 100644 --- a/cmd/dockerd/daemon.go +++ b/cmd/dockerd/daemon.go @@ -167,7 +167,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { } ctx, cancel := context.WithCancel(context.Background()) - waitForContainerDShutdown, err := cli.initContainerD(ctx) + waitForContainerDShutdown, err := cli.initContainerd(ctx) if waitForContainerDShutdown != nil { defer waitForContainerDShutdown(10 * time.Second) } diff --git a/cmd/dockerd/daemon_unix.go b/cmd/dockerd/daemon_unix.go index 5417ea6e56..0265524be1 100644 --- a/cmd/dockerd/daemon_unix.go +++ b/cmd/dockerd/daemon_unix.go @@ -132,32 +132,34 @@ func newCgroupParent(config *config.Config) string { return cgroupParent } -func (cli *DaemonCli) initContainerD(ctx context.Context) (func(time.Duration) error, error) { - var waitForShutdown func(time.Duration) error - if cli.Config.ContainerdAddr == "" { - systemContainerdAddr, ok, err := systemContainerdRunning(honorXDG) - if err != nil { - return nil, errors.Wrap(err, "could not determine whether the system containerd is running") - } - if !ok { - logrus.Info("containerd not running, starting managed containerd") - opts, err := cli.getContainerdDaemonOpts() - if err != nil { - return nil, errors.Wrap(err, "failed to generate containerd options") - } - - r, err := supervisor.Start(ctx, filepath.Join(cli.Config.Root, "containerd"), filepath.Join(cli.Config.ExecRoot, "containerd"), opts...) - if err != nil { - return nil, errors.Wrap(err, "failed to start containerd") - } - cli.Config.ContainerdAddr = r.Address() - - // Try to wait for containerd to shutdown - waitForShutdown = r.WaitTimeout - } else { - cli.Config.ContainerdAddr = systemContainerdAddr - } +func (cli *DaemonCli) initContainerd(ctx context.Context) (func(time.Duration) error, error) { + if cli.ContainerdAddr != "" { + // use system containerd at the given address. + return nil, nil } - return waitForShutdown, nil + systemContainerdAddr, ok, err := systemContainerdRunning(honorXDG) + if err != nil { + return nil, errors.Wrap(err, "could not determine whether the system containerd is running") + } + if ok { + // detected a system containerd at the given address. + cli.ContainerdAddr = systemContainerdAddr + return nil, nil + } + + logrus.Info("containerd not running, starting managed containerd") + opts, err := cli.getContainerdDaemonOpts() + if err != nil { + return nil, errors.Wrap(err, "failed to generate containerd options") + } + + r, err := supervisor.Start(ctx, filepath.Join(cli.Root, "containerd"), filepath.Join(cli.ExecRoot, "containerd"), opts...) + if err != nil { + return nil, errors.Wrap(err, "failed to start containerd") + } + cli.ContainerdAddr = r.Address() + + // Try to wait for containerd to shutdown + return r.WaitTimeout, nil } diff --git a/cmd/dockerd/daemon_windows.go b/cmd/dockerd/daemon_windows.go index 08a77b7cb8..9bff9b97cb 100644 --- a/cmd/dockerd/daemon_windows.go +++ b/cmd/dockerd/daemon_windows.go @@ -93,8 +93,8 @@ func newCgroupParent(config *config.Config) string { return "" } -func (cli *DaemonCli) initContainerD(_ context.Context) (func(time.Duration) error, error) { - system.InitContainerdRuntime(cli.Config.ContainerdAddr) +func (cli *DaemonCli) initContainerd(_ context.Context) (func(time.Duration) error, error) { + system.InitContainerdRuntime(cli.ContainerdAddr) return nil, nil }