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)
|
||||
}
|
||||
|
||||
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 {
|
||||
utils.Debugf("Unable to remove container from link graph: %s", err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue