@@ -171,22 +171,36 @@ func (r *Docker) Enable(disOthers bool, cgroupDriver string, inUserNamespace boo
171171 return err
172172 }
173173
174+ // restart cri-docker
175+ // avoid error: "Exiting due to RUNTIME_ENABLE: Failed to enable container runtime: sudo systemctl restart cri-docker: exit status 1"
176+ // => journalctl: "cri-docker.socket: Socket service cri-docker.service already active, refusing."
174177 if r .CRIService != "" {
175- if err := r .Init .Enable ("cri-docker.socket" ); err != nil {
176- return err
178+ socket := "cri-docker.socket"
179+ service := "cri-docker.service"
180+ // allow "native" socket activation:
181+ // prevent active socket to reactivate service, that we're going to stop next - 'systemctl status cri-docker.socket': "Triggers: cri-docker.service"
182+ // intentionally continue on any error
183+ if r .Init .Active (socket ) {
184+ _ = r .Init .Stop (socket )
177185 }
178- if err := r .Init .Unmask ( r . CRIService ); err != nil {
179- return err
186+ if r .Init .Active ( service ) {
187+ _ = r . Init . Stop ( service )
180188 }
181- if err := r .Init .Enable (r .CRIService ); err != nil {
189+
190+ if err := r .Init .Unmask (socket ); err != nil {
182191 return err
183192 }
184- if err := r .Init .Restart ( r . CRIService ); err != nil {
193+ if err := r .Init .Enable ( socket ); err != nil {
185194 return err
186195 }
187- if err := r .Init .Restart ("cri-docker" ); err != nil {
196+ if err := r .Init .Restart (socket ); err != nil {
188197 return err
189198 }
199+
200+ // try to restart service if stopped, intentionally continue on any error
201+ if ! r .Init .Active (service ) {
202+ _ = r .Init .Restart (service )
203+ }
190204 }
191205
192206 return nil
0 commit comments