如何在本地删除docker存储库的所有标记?

时间:2016-02-03 20:03:17

标签: bash docker

我想在本地删除给定docker存储库上的所有标记。例如,如果我在名为“my_image:latest”和“my_image:sometag”的仓库上有两个标签,我想删除这两个标签。但是,我不想删除“another_image:latest”。

4 个答案:

答案 0 :(得分:2)

主要是一行:

docker images | grep "$DOCKER_REPO" | awk '{system("docker rmi " "'"$DOCKER_REPO:"'" $2)}'

请记住,除非使用-f选项,否则无法删除正在使用的图像。

答案 1 :(得分:2)

您可以使用以下shell函数:

dockercleanrepo(){
    docker images --no-trunc --format '{{.ID}} {{.Repository}}' \
    | grep "$@" | awk '{ print $1 }' | xargs -t docker rmi
}

将其添加到bashrc,zshrc并使用它:

dockercleanrepo <your-repoitory>

还与此相关,请检查问题How to remove old and unused Docker images的答案。

答案 2 :(得分:1)

不知道自@jcmack发布答案以来是否有所改变,或者google容器注册表是否特殊但是它不能按原样工作;我适应了它:

docker images | grep "gcr.io/project-id" | awk '{system("docker rmi " $1 ":" $2)}'

答案 3 :(得分:1)

列出要删除的图像:

$ docker images --filter='reference=my_image' --format='{{.Repository}}:{{.Tag}}'

要同时删除它们,请与docker rmi组合:

$ docker images --filter='reference=my_image' --format='{{.Repository}}:{{.Tag}}' | xargs docker rmi