2016-11-22 75 views

回答

7

你可以試試這個,這將

  • 過濾掉不需要的項目(grep -v),然後
  • 返回的第一列,其中包含了容器的id

運行此命令:

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

要使用cut而不是awk,試試這個:bash: shortest way to get n-th column of output

2

這是實際發生docker rm $(List of container Ids)

awk/ cut使用這裏
docker rm $(docker ps -a | grep -v "my_docker" | cut -d ' ' -f1) 

例子。所以這只是您如何過濾容器ID列表的問題。

例如:如果您想要刪除所有容器,但只有一個具有特定容器ID,那麼此docker rm $(docker ps -a -q | grep -v "my_container_id")將執行此操作。

+1

這不起作用,因爲'docker ps -a -q'不打印容器名稱,這意味着您不能使用'grep -v'將其過濾掉。 – nwinkler

1

我寧願使用沿(未經測試)線的東西

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

這會給(運行或不)容器的名字來測試容器名稱,可以過濾和

docker rm

使用該信息

1

的questio的標題n要求圖片,不是集裝箱。對於那些跨越了這個問題尋找絆腳石刪除除一個所有圖像,你可以使用碼頭工人修剪帶過濾器的標誌位:

docker image prune -a --force --filter "label!=image_name" 

與圖像的名稱替換IMAGE_NAME。

您還可以使用「until =」標誌按日期修剪圖像。

0

老問題,但我喜歡振興帖子。

對於這樣的情況下,你可以使用Spotify的碼頭工人GC:https://github.com/spotify/docker-gc#excluding-containers-from-garbage-collection

你可以這樣做:

echo "my_docker" >> /tmp/docker-gc-exclude-containers 
echo '*' > /tmp/docker-gc-exclude 
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro -v /tmp/docker-gc-exclude-containers:/etc/docker-gc-exclude-containers:ro -v /tmp/docker-gc-exclude:/etc/docker-gc-exclude:ro spotify/docker-gc 

(如果你想獲得您的圖像清洗掉也可避免安裝docker-gc-exclude文件)

相關問題