주어진 문자열 ( imagename
) 이 포함 된 이름을 가진 모든 버전의 도커 이미지를 삭제하고 싶습니다 .
아래를 시도했지만 작동하지 않는 것 같습니다.
docker images | grep 'imagename' | xargs -I {} docker rmi
답변
다음을 시도하십시오.
docker rmi $(docker images |grep 'imagename')
Windows Powershell :
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")
답변
약간 더 정확한 버전-저장소 이름에만 grepping :
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
답변
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
답변
docker images
실제로 필터링 할 이미지 이름으로 첫 번째 위치 인수를 사용합니다. grep 및 awk가 필요하지 않습니다. 그만큼-q
옵션은에 공급할 수있는 일치하는 이미지 ID 만 반환합니다 docker rmi
.
docker rmi --force $(docker images -q 'imagename' | uniq)
이 uniq
같은 이미지가 다르게 태그가있는 경우, 중복을 제거하기 위해 필요합니다.
답변
간단히 --force
명령 끝에 추가 할 수 있습니다 . 처럼:
sudo docker rmi <docker_image_id> --force
보다 지능적으로 만들기 위해 이미지를 제거하기 전에 실행중인 컨테이너를 중지 할 수 있습니다.
sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')
sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')
sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force
에서 docker ps
, $ 1 1 열, 즉 고정 표시기 컨테이너 ID이며, $ 3은 3 열, 즉 고정 표시기 이미지 ID입니다
답변
내 대답이 더 간단하다고 생각합니다.
예를 들어, 이미지 이름은 python_image
입니다.
그러면 코드는 다음과 같아야합니다 .
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
이게 도움이 되길 바란다.
답변
또 다른 간결한 대답을 얻었습니다. 유일한 변경은 불필요한 -I {}
플래그 를 제거하는 것 입니다.
docker images | grep 'imagename' | xargs docker rmi
