Hi, I would like to remove a number of mailcow images. It has different image names but owned by a same user which is mailcow.
How may I remove those mailcow images in a single command? Can I use RegEx ?
Thank you.
Share and learn in the Docker community.
Hi, I would like to remove a number of mailcow images. It has different image names but owned by a same user which is mailcow.
How may I remove those mailcow images in a single command? Can I use RegEx ?
Thank you.
Hello,
based on this StackOverflow-article I have created the following one-liner
docker rmi `docker image ls | egrep "^mailcow/" | awk '{print$1}'`
At least it was working on my linux-box 
Thanks Matthias, I tried it but somehow the images still persisted :
First, I tried the template string command to ensure the images are shown in the result. It did.
Second, I executed the whole command but it did not discover mailcow images (It’s wierd).
Last, I listed docker images and mailcow images were still there.
I have no idea what went wrong…
Uups, sorry - only tested with latest as tag.
So instead you can use the image ID to delete the wanted images
docker rmi `docker image ls | egrep "^mailcow/" | awk '{print $3}'`
or concat the repository and the tag
docker rmi `docker image ls | egrep "^mailcow/" | awk '{print $1":"$2}'`
Big thanks @matthiasradde !
Finally I think I got it. So, docker image ls displays repository, tag, and image id, etc. in order, just like the result of docker image ls in the picture I sent above (I can’t send more than one media in a reply due to terms of DockerHub, sorry).
Therefore this one displays repository :
docker image ls | egrep "^mailcow/" | awk '{print $1}'
Meanwhile this one gets tag :
docker image ls | egrep "^mailcow/" | awk '{print $2}'
Then this command fetches image id :
docker image ls | egrep "^mailcow/" | awk '{print $3}'
The result of each command :
==================================
Removing a docker image can be done through either :
docker rmi <repository>:<tag>
or
docker rmi <image id>
(note)
<repository>:<tag> = <username/image name>:<tag> such as mailcow/unbound:1.14 (username=mailcow, image name=unbound, and tag=1.14).
Hence, the command below deletes docker images by fetching the image id :
docker rmi `docker image ls | egrep "^mailcow/" | awk '{print$3}'`
Please correct me if there’s something wrong…