Again, please tell me if there is a better way to do this.
While testing docker, frequently I need to start/stop/rm containers. I got real sick of having to ls them and copy paste the container ID.
Using this alias, I just have to remember a single part of the name of the container, and I will get the container IDs that can then be included as part of another command:
$ alias dcl='_dcl(){ docker container ls -aq -f name="$1";}; _dcl'
$ dcl snikket
b3fcbc808cc9
1947885fbb24
054d67d2e8b9
d8fe9df5f61f
So now that I’m getting a list of IDs, I can easily, for example, pause all of them:
$ docker container pause $( dcl snikket )
Error response from daemon: container is not running
Error response from daemon: container is not running
Error response from daemon: container is not running
Error response from daemon: container is not running
The containers weren’t actually running, but this shows the alias working.
dcl obviously stands for ‘docker container ls’
I don’t know if this works in
docker
(usually there is 1:1 equivalency between the two), but withpodman
you can do something like:podman stop --filter name=foo
man podman-stop
tells us:--filter, -f=filter Filter what containers are going to be stopped. Multiple filters can be given with multiple uses of the --filter flag. Filters with the same key work inclusive with the only exception being label which is exclusive. Filters with different keys always work exclusive.
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...] Options: -s, --signal string Signal to send to the container -t, --time int Seconds to wait before killing the container
Unfortunately no filter here