Merge pull request #44834 from thaJeztah/23.0_backport_docker_in_overlayfs
[23.0 backport] Work around missing rename support when the backing filesystem is overlayfs
This commit is contained in:
commit
4df8f779b5
1 changed files with 12 additions and 5 deletions
|
@ -53,8 +53,9 @@ func (daemon *Daemon) loadRuntimes() error {
|
|||
|
||||
func (daemon *Daemon) initRuntimes(runtimes map[string]types.Runtime) (err error) {
|
||||
runtimeDir := filepath.Join(daemon.configStore.Root, "runtimes")
|
||||
runtimeOldDir := runtimeDir + "-old"
|
||||
// Remove old temp directory if any
|
||||
os.RemoveAll(runtimeDir + "-old")
|
||||
os.RemoveAll(runtimeOldDir)
|
||||
tmpDir, err := os.MkdirTemp(daemon.configStore.Root, "gen-runtimes")
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get temp dir to generate runtime scripts")
|
||||
|
@ -68,15 +69,21 @@ func (daemon *Daemon) initRuntimes(runtimes map[string]types.Runtime) (err error
|
|||
return
|
||||
}
|
||||
|
||||
if err = os.Rename(runtimeDir, runtimeDir+"-old"); err != nil {
|
||||
return
|
||||
if err = os.Rename(runtimeDir, runtimeOldDir); err != nil {
|
||||
logrus.WithError(err).WithField("dir", runtimeDir).
|
||||
Warn("failed to rename runtimes dir to old. Will try to removing it")
|
||||
if err = os.RemoveAll(runtimeDir); err != nil {
|
||||
logrus.WithError(err).WithField("dir", runtimeDir).
|
||||
Warn("failed to remove old runtimes dir")
|
||||
return
|
||||
}
|
||||
}
|
||||
if err = os.Rename(tmpDir, runtimeDir); err != nil {
|
||||
err = errors.Wrap(err, "failed to setup runtimes dir, new containers may not start")
|
||||
return
|
||||
}
|
||||
if err = os.RemoveAll(runtimeDir + "-old"); err != nil {
|
||||
logrus.WithError(err).WithField("dir", tmpDir).
|
||||
if err = os.RemoveAll(runtimeOldDir); err != nil {
|
||||
logrus.WithError(err).WithField("dir", runtimeOldDir).
|
||||
Warn("failed to remove old runtimes dir")
|
||||
}
|
||||
}()
|
||||
|
|
Loading…
Add table
Reference in a new issue