docker/patch/0160-docker-create-a-soft-link-from-runtime-default-to-ru.patch
Grooooot e7de2c79b3 docker: add patches
Signed-off-by: Grooooot <isula@huawei.com>
2020-03-05 15:13:09 +08:00

90 lines
2.8 KiB
Diff

From c86ba11974a14d4e1fadede7f30c9a9401c81659 Mon Sep 17 00:00:00 2001
From: liuzekun <liuzekun@huawei.com>
Date: Wed, 26 Feb 2020 07:06:58 -0500
Subject: [PATCH] docker: create a soft link from runtime-default to
runtime-runc
reason: create a soft link from runtime-default to runtime-runc,
and also copy and back it content
Signed-off-by: liuzekun <liuzekun@huawei.com>
---
components/engine/daemon/daemon.go | 57 ++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go
index f591878a..3ff56912 100644
--- a/components/engine/daemon/daemon.go
+++ b/components/engine/daemon/daemon.go
@@ -1147,6 +1147,9 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
return nil, err
}
+ if err := d.linkRuntimeDefault(); err != nil {
+ logrus.Warnf("create soft link failed : %v", err)
+ }
if err := d.restore(); err != nil {
return nil, err
}
@@ -1587,3 +1590,57 @@ func (daemon *Daemon) BuilderBackend() builder.Backend {
*images.ImageService
}{daemon, daemon.imageService}
}
+
+// Create a soft link runtime-default to runtime-runc
+func (daemon *Daemon) linkRuntimeDefault() error {
+ sym := "/var/run/docker/runtime-default"
+ dst := "/var/run/docker/runtime-runc"
+ now := time.Now().Format("/var/run/docker/bak/2006-01-03.150405.000/")
+ bak := func(p string) string {
+ os.MkdirAll(now, 0700)
+ return now + filepath.Base(p)
+ }
+ mov := func(src, dst string) error {
+ var err error
+ dirs, _ := ioutil.ReadDir(src + "/moby")
+ for _, f := range dirs {
+ old := fmt.Sprintf("%s/moby/%s", src, f.Name())
+ new := fmt.Sprintf("%s/moby/%s", dst, f.Name())
+ if e := os.Rename(old, new); e != nil {
+ if err == nil {
+ err = fmt.Errorf("mv %s %s", src, dst)
+ }
+ err = fmt.Errorf("%s %s %v", err, f.Name(), e)
+ }
+ }
+ return err
+ }
+ if err := os.MkdirAll(dst+"/moby", 0700); err != nil {
+ return fmt.Errorf("create runtime-runc failed")
+ }
+ if f, _ := os.Lstat(dst); f.Mode()&os.ModeSymlink != 0 {
+ if err := os.Rename(dst, bak(dst)); err != nil { // dst must be dir.
+ return fmt.Errorf("bak runtime-runc failed %v", err)
+ }
+ if err := os.MkdirAll(dst+"/moby", 0700); err != nil {
+ return fmt.Errorf("create runtime-runc failed")
+ }
+ if err := mov(bak(dst), dst); err != nil {
+ return err
+ }
+ }
+
+ if f, err := os.Lstat(sym); err != nil { // sym not exist, link it.
+ return os.Symlink(dst, sym)
+ } else if f.Mode()&os.ModeSymlink != 0 { // sym is symlink, return ok.
+ return nil
+ }
+
+ if err := os.Rename(sym, bak(sym)); err != nil { // sym must be link.
+ return fmt.Errorf("bak runtime-default failed")
+ }
+ if err := mov(bak(sym), dst); err != nil {
+ return err
+ }
+ return os.Symlink(dst, sym)
+}
--
2.19.1