mirror of
https://github.com/moby/moby.git
synced 2025-07-30 18:23:29 +03:00
Restore volume refs after daemon restart
Volume refs were not being restored on daemon restart. This made it possible to remove a volume being used by other containers after a daemon restart. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
@ -48,3 +50,35 @@ func TestDaemonRestartWithRunningContainersPorts(t *testing.T) {
|
||||
|
||||
logDone("daemon - running containers on daemon restart")
|
||||
}
|
||||
|
||||
func TestDaemonRestartWithVolumesRefs(t *testing.T) {
|
||||
d := NewDaemon(t)
|
||||
if err := d.StartWithBusybox(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer d.Stop()
|
||||
|
||||
if out, err := d.Cmd("run", "-d", "--name", "volrestarttest1", "-v", "/foo", "busybox"); err != nil {
|
||||
t.Fatal(err, out)
|
||||
}
|
||||
if err := d.Restart(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := d.Cmd("run", "-d", "--volumes-from", "volrestarttest1", "--name", "volrestarttest2", "busybox"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if out, err := d.Cmd("rm", "-fv", "volrestarttest2"); err != nil {
|
||||
t.Fatal(err, out)
|
||||
}
|
||||
v, err := d.Cmd("inspect", "--format", "{{ json .Volumes }}", "volrestarttest1")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
volumes := make(map[string]string)
|
||||
json.Unmarshal([]byte(v), &volumes)
|
||||
if _, err := os.Stat(volumes["/foo"]); err != nil {
|
||||
t.Fatalf("Expected volume to exist: %s - %s", volumes["/foo"], err)
|
||||
}
|
||||
|
||||
logDone("daemon - volume refs are restored")
|
||||
}
|
||||
|
Reference in New Issue
Block a user