[docker] 이름을 기반으로 Docker 이미지를 제거하는 방법은 무엇입니까?

주어진 문자열 ( 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