Przeglądaj źródła

Fix restore container by nspid
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)

Michael Crosby 11 lat temu
rodzic
commit
9f03fd76b5
1 zmienionych plików z 18 dodań i 1 usunięć
  1. 18 1
      execdriver/namespaces/driver.go

+ 18 - 1
execdriver/namespaces/driver.go

@@ -112,7 +112,24 @@ func (d *driver) Kill(p *execdriver.Command, sig int) error {
 }
 
 func (d *driver) Restore(c *execdriver.Command) error {
-	return ErrNotSupported
+	var (
+		nspid int
+		p     = filepath.Join(d.root, "containers", c.ID, "root", ".nspid")
+	)
+	f, err := os.Open(p)
+	if err != nil {
+		return err
+	}
+	defer f.Close()
+	if _, err := fmt.Fscanf(f, "%d", &nspid); err != nil {
+		return err
+	}
+	proc, err := os.FindProcess(nspid)
+	if err != nil {
+		return err
+	}
+	_, err = proc.Wait()
+	return err
 }
 
 func (d *driver) Info(id string) execdriver.Info {