解决方案:
要删除所有基于 centos:7
的 docker 容器,请运行以下 linux 命令:
# docker ps -a | awk '{ print $1,$2 }' | grep centos:7 | awk '{print $1 }' | xargs -I {} docker rm {}
说明:
首先,我们需要获取所有容器 ID:
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 16ef47387cbd fedora:21 "/bin/bash" 5 hours ago Exited (0) 5 hours ago romantic_heisenberg 6ae3e3870739 centos:7 "/bin/bash" 5 hours ago Exited (0) 5 hours ago clever_rosalind effd4037ab74 centos:7 "/bin/bash" 5 hours ago Exited (0) 5 hours ago backstabbing_almeida 72c89af47615 debian:8 "/bin/bash" 5 hours ago Exited (0) 5 hours ago berserk_pasteur 195c78f3eb0b debian:8 "/bin/bash" 5 hours ago Exited (0) 5 hours ago cocky_yonath f060a5bfdb11 debian:8 "/bin/bash" 5 hours ago Exited (0) 5 hours ago insane_galileo
为了避免图像和容器名称之间的混淆,我们可以只保留 CONTAINER ID
和 IMAGE
列:
# docker ps -a | awk '{ print $1,$2 }' CONTAINER ID 16ef47387cbd fedora:21 6ae3e3870739 centos:7 effd4037ab74 centos:7 72c89af47615 debian:8 195c78f3eb0b debian:8 f060a5bfdb11 debian:8
接下来,我们可以将上述输出通过管道传递给 grep
命令,以仅过滤那些基于特定图像名称的容器。
例如,让我们根据 centos:7
图像过滤所有容器:
# docker ps -a | awk '{ print $1,$2 }' | grep centos:7 6ae3e3870739 centos:7 effd4037ab74 centos:7
此时我们只对 CONTAINER ID
感兴趣:
# docker ps -a | awk '{ print $1,$2 }' | grep centos:7 | awk '{print $1 }' 6ae3e3870739 effd4037ab74
最后,我们可以使用 xargs
并删除剩余的容器 ID:
# docker ps -a | awk '{ print $1,$2 }' | grep centos:7 | awk '{print $1 }' | xargs -I {} docker rm {} 6ae3e3870739 effd4037ab74
问题:
如何根据 docker 镜像名称删除所有 docker 容器。
我不想删除所有可用的容器,只删除那些基于特定图像的容器。
例如,我想删除基于图像 centos:7
的所有容器。
日期:2020-07-07 20:54:49 来源:oir作者:oir