mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #3020 from crosbymichael/remove-init-layer
Ensure that the init layer is removed with the container
This commit is contained in:
commit
4328926acc
2 changed files with 45 additions and 0 deletions
|
@ -843,3 +843,43 @@ func TestGetAllChildren(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDestroyWithInitLayer(t *testing.T) {
|
||||||
|
runtime := mkRuntime(t)
|
||||||
|
defer nuke(runtime)
|
||||||
|
|
||||||
|
container, _, err := runtime.Create(&docker.Config{
|
||||||
|
Image: GetTestImage(runtime).ID,
|
||||||
|
Cmd: []string{"ls", "-al"},
|
||||||
|
}, "")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
// Destroy
|
||||||
|
if err := runtime.Destroy(container); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure runtime.Exists() behaves correctly
|
||||||
|
if runtime.Exists("test_destroy") {
|
||||||
|
t.Fatalf("Exists() returned true")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure runtime.List() doesn't list the destroyed container
|
||||||
|
if len(runtime.List()) != 0 {
|
||||||
|
t.Fatalf("Expected 0 container, %v found", len(runtime.List()))
|
||||||
|
}
|
||||||
|
|
||||||
|
driver := runtime.Graph().Driver()
|
||||||
|
|
||||||
|
// Make sure that the container does not exist in the driver
|
||||||
|
if _, err := driver.Get(container.ID); err == nil {
|
||||||
|
t.Fatal("Conttainer should not exist in the driver")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure that the init layer is removed from the driver
|
||||||
|
if _, err := driver.Get(fmt.Sprintf("%s-init", container.ID)); err == nil {
|
||||||
|
t.Fatal("Container's init layer should not exist in the driver")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -237,6 +237,11 @@ func (runtime *Runtime) Destroy(container *Container) error {
|
||||||
return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", runtime.driver, container.ID, err)
|
return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", runtime.driver, container.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initID := fmt.Sprintf("%s-init", container.ID)
|
||||||
|
if err := runtime.driver.Remove(initID); err != nil {
|
||||||
|
return fmt.Errorf("Driver %s failed to remove init filesystem %s: %s", runtime.driver, initID, err)
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := runtime.containerGraph.Purge(container.ID); err != nil {
|
if _, err := runtime.containerGraph.Purge(container.ID); err != nil {
|
||||||
utils.Debugf("Unable to remove container from link graph: %s", err)
|
utils.Debugf("Unable to remove container from link graph: %s", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue