mirror of
https://github.com/containers/podman.git
synced 2025-08-03 01:37:51 +08:00
Show c/storage (Buildah/CRI-O) containers in ps
The `podman ps --all` command will now show containers that are under the control of other c/storage container systems and the new `ps --storage` option will show only containers that are in c/storage but are not controlled by libpod. In the below examples, the '*working-container' entries were created by Buildah. ``` podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9257ef8c786c docker.io/library/busybox:latest ls /etc 8 hours ago Exited (0) 8 hours ago gifted_jang d302c81856da docker.io/library/busybox:latest buildah 30 hours ago storage busybox-working-container 7a5a7b099d33 localhost/tom:latest ls -alF 30 hours ago Exited (0) 30 hours ago hopeful_hellman 01d601fca090 localhost/tom:latest ls -alf 30 hours ago Exited (1) 30 hours ago determined_panini ee58f429ff26 localhost/tom:latest buildah 33 hours ago storage alpine-working-container podman ps --external CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d302c81856da docker.io/library/busybox:latest buildah 30 hours ago external busybox-working-container ee58f429ff26 localhost/tom:latest buildah 33 hours ago external alpine-working-container ``` Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
@ -8,11 +8,13 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/containers/buildah"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v2/libpod/define"
|
||||
"github.com/containers/podman/v2/libpod/events"
|
||||
"github.com/containers/podman/v2/pkg/cgroups"
|
||||
"github.com/containers/podman/v2/pkg/rootless"
|
||||
"github.com/containers/storage"
|
||||
"github.com/containers/storage/pkg/stringid"
|
||||
"github.com/docker/go-units"
|
||||
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
@ -905,3 +907,34 @@ func (r *Runtime) PruneContainers(filterFuncs []ContainerFilter) (map[string]int
|
||||
}
|
||||
return prunedContainers, pruneErrors, nil
|
||||
}
|
||||
|
||||
// StorageContainers returns a list of containers from containers/storage that
|
||||
// are not currently known to Podman.
|
||||
func (r *Runtime) StorageContainers() ([]storage.Container, error) {
|
||||
|
||||
if r.store == nil {
|
||||
return nil, define.ErrStoreNotInitialized
|
||||
}
|
||||
|
||||
storeContainers, err := r.store.Containers()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error reading list of all storage containers")
|
||||
}
|
||||
retCtrs := []storage.Container{}
|
||||
for _, container := range storeContainers {
|
||||
exists, err := r.state.HasContainer(container.ID)
|
||||
if err != nil && err != define.ErrNoSuchCtr {
|
||||
return nil, errors.Wrapf(err, "failed to check if %s container exists in database", container.ID)
|
||||
}
|
||||
if exists {
|
||||
continue
|
||||
}
|
||||
retCtrs = append(retCtrs, container)
|
||||
}
|
||||
|
||||
return retCtrs, nil
|
||||
}
|
||||
|
||||
func (r *Runtime) IsBuildahContainer(id string) (bool, error) {
|
||||
return buildah.IsContainer(id, r.store)
|
||||
}
|
||||
|
Reference in New Issue
Block a user