mirror of
https://github.com/containers/podman.git
synced 2025-10-18 11:42:55 +08:00
Add --storage flag to 'podman rm' (local only)
This flag switches to removing containers directly from c/storage and is mostly used to remove orphan containers. It's a superior solution to our former one, which attempted removal from storage under certain circumstances and could, under some conditions, not trigger. Also contains the beginning of support for storage in `ps` but wiring that in is going to be a much bigger pain. Fixes #3329. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
@ -9,9 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/containers/libpod/libpod/events"
|
||||
"github.com/containers/libpod/libpod/image"
|
||||
"github.com/containers/libpod/pkg/rootless"
|
||||
"github.com/containers/storage"
|
||||
"github.com/containers/storage/pkg/stringid"
|
||||
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
"github.com/opencontainers/runtime-tools/generate"
|
||||
@ -614,16 +612,3 @@ func (r *Runtime) GetLatestContainer() (*Container, error) {
|
||||
}
|
||||
return ctrs[lastCreatedIndex], nil
|
||||
}
|
||||
|
||||
// RemoveContainersFromStorage attempt to remove containers from storage that do not exist in libpod database
|
||||
func (r *Runtime) RemoveContainersFromStorage(ctrs []string) {
|
||||
for _, i := range ctrs {
|
||||
// if the container does not exist in database, attempt to remove it from storage
|
||||
if _, err := r.LookupContainer(i); err != nil && errors.Cause(err) == image.ErrNoSuchCtr {
|
||||
r.storageService.UnmountContainerImage(i, true)
|
||||
if err := r.storageService.DeleteContainer(i); err != nil && errors.Cause(err) != storage.ErrContainerUnknown {
|
||||
logrus.Errorf("Failed to remove container %q from storage: %s", i, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user