@@ -10,6 +10,7 @@ import (
1010 "strings"
1111 "time"
1212
13+ containerddefaults "github.com/containerd/containerd/defaults"
1314 "github.com/docker/distribution/uuid"
1415 "github.com/docker/docker/api"
1516 apiserver "github.com/docker/docker/api/server"
@@ -140,22 +141,25 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
140141
141142 ctx , cancel := context .WithCancel (context .Background ())
142143 if cli .Config .ContainerdAddr == "" && runtime .GOOS != "windows" {
143- opts , err := cli .getContainerdDaemonOpts ()
144- if err != nil {
145- cancel ()
146- return errors .Wrap (err , "failed to generate containerd options" )
147- }
148-
149- r , err := supervisor .Start (ctx , filepath .Join (cli .Config .Root , "containerd" ), filepath .Join (cli .Config .ExecRoot , "containerd" ), opts ... )
150- if err != nil {
151- cancel ()
152- return errors .Wrap (err , "failed to start containerd" )
153- }
144+ if ! systemContainerdRunning () {
145+ opts , err := cli .getContainerdDaemonOpts ()
146+ if err != nil {
147+ cancel ()
148+ return errors .Wrap (err , "failed to generate containerd options" )
149+ }
154150
155- cli .Config .ContainerdAddr = r .Address ()
151+ r , err := supervisor .Start (ctx , filepath .Join (cli .Config .Root , "containerd" ), filepath .Join (cli .Config .ExecRoot , "containerd" ), opts ... )
152+ if err != nil {
153+ cancel ()
154+ return errors .Wrap (err , "failed to start containerd" )
155+ }
156+ cli .Config .ContainerdAddr = r .Address ()
156157
157- // Try to wait for containerd to shutdown
158- defer r .WaitTimeout (10 * time .Second )
158+ // Try to wait for containerd to shutdown
159+ defer r .WaitTimeout (10 * time .Second )
160+ } else {
161+ cli .Config .ContainerdAddr = containerddefaults .DefaultAddress
162+ }
159163 }
160164 defer cancel ()
161165
@@ -661,3 +665,8 @@ func validateAuthzPlugins(requestedPlugins []string, pg plugingetter.PluginGette
661665 }
662666 return nil
663667}
668+
669+ func systemContainerdRunning () bool {
670+ _ , err := os .Lstat (containerddefaults .DefaultAddress )
671+ return err == nil
672+ }
0 commit comments