删除除了一个之外的所有Docker镜像

我有脚本,停止容器,然后将其删除

docker stop $(docker ps -q) docker rm $(docker ps -a -q) 

但我不想删除名为“my_docker”的docker集装箱我怎么能删除除了这一个所有的容器?

你可以试试这个

  • 过滤掉不需要的项目( grep -v ),然后
  • 返回包含容器ID的第一列

运行这个命令:

 docker rm $(docker ps -a | grep -v "my_docker" | awk '{print $1}') 

要使用cut而不是awk ,试试这个:

 docker rm $(docker ps -a | grep -v "my_docker" | cut -d ' ' -f1) 

awk / cut用法示例: bash:获取第n列输出的最短path

这是实际发生的事情docker rm $(List of container Ids) 。 所以这只是您如何过滤容器ID列表的问题。

例如:如果你正在寻找删除所有的容器,但只有一个具有特定的容器ID,那么这个docker rm $(docker ps -a -q | grep -v "my_container_id")将做的伎俩。

我宁愿使用(未经testing的)行来testing容器名称,

docker inspect --format '{{ .Name }}' $(docker ps -aq)

这将给出(运行或不运行)容器的名称,你可以过滤和

docker rm

使用这个信息