이름을 기준으로 도커 이미지를 제거하는 방법은?
지정된 문자열이 포함된 이름을 가진 모든 버전의 도커 이미지를 삭제합니다(imagename
).
아래를 시도해 보았지만 작동하지 않는 것 같습니다.
docker images | grep 'imagename' | xargs -I {} docker rmi
다음을 시도해 봅니다.
docker rmi $(docker images | grep 'imagename')
또는 다음과 같이 할 수 있습니다.
docker rmi $(docker images 'completeimagename' -a -q)
Windows PowerShell에서:
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")
조금 더 정확한 버전 - 저장소 이름에 대한 grepping only:
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker images
실제로 필터링할 이미지 이름/id로 첫 번째 위치 인수를 사용합니다.grep과 awk는 필요없어요.-q
옵션은 다음으로 공급할 수 있는 일치하는 이미지 ID만 반환합니다.docker rmi
.
docker rmi --force $(docker images -q 'imagename' | uniq)
그uniq
동일한 이미지에 다른 태그가 지정된 경우 중복을 제거하기 위해 필요합니다.
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
간단히 추가할 수 있습니다.--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은 첫 번째 열(즉, 도커 컨테이너 ID)이고 $3은 세 번째 열(즉, 도커 이미지 ID)입니다.
저는 제 대답이 더 간단하다고 생각합니다.
예를 들어, 이미지 이름은python_image
.
그렇다면 코드는 다음과 같습니다.
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
도움이 되었으면 좋겠습니다.
작업한 경우(Docker 버전 19.03.5):
docker rmi $(docker images 'imagename' -q)
"docker images 'imagename' -q" 명령은 따옴표로 묶은 단일 인수의 모든 이미지 ID를 나열하므로 docker rmi(또는 강제로 사용하는 경우 docker rmi -f)와 연결하면 선택한 이름의 모든 이미지가 제거됩니다.
저는 또 다른 간결한 답변을 받았습니다.유일한 변화는 불필요한 것들을 제거하는 것이었습니다.-I {}
깃발을 올리다
docker images | grep 'imagename' | xargs docker rmi
docker rmi $(docker images --filter=reference="IMAGENAME:TAG")
예를 들어 다음 이미지를 가지고 있는 경우
REPOSITORY TAG IMAGE ID CREATED SIZE
abcdefg/hij 7.0.0-beta-4.0 3128835950cd 7 days ago 51.4MB
abcdefg/hij-action 7.0.0-beta-4.0 42a7255beb74 7 days ago 97.4MB
abcdefg/hij-test 7.0.0-beta-4.0 17246aed35d0 7 days ago 97.4MB
abcdefg/hij-server 7.0.0-beta-4.0 42c45e561f2c 7 days ago 335MB
abcdefg/hij-init 7.0.0-beta-3.0 f648bb622933 7 days ago 55.2MB
abcdefg/hij-dir 7.0.0-beta-3.0 0db07d3aaccf 7 days ago 97.4MB
abcdefg/hij-mount 7.0.0-beta-3.0 18d1c0e1502c 4 weeks ago 33.7MB
그리고나서docker rmi $(docker images --filter=reference="abcd*:*4.0")
처음 4개의 이미지가 제거됩니다.
자세한 정보는 https://docs.docker.com/engine/reference/commandline/images/ 를 참조하시기 바랍니다.
docker rmi `docker images | awk '$1 ~ /imageName/ {print $3}'`
이렇게 하면 "imageName"이라는 이름으로 모든 이미지가 제거됩니다.경우에 따라 "이미지가 하나 이상의 리포지토리에서 참조됨"과 같은 오류가 발생할 수 있습니다.그런 경우 강제 삭제를 사용합니다.
docker rmi -f `docker images | awk '$1 ~ /imageName/ {print $3}'`
다른 방법은 다음과 같습니다.
docker images | awk '{ OFS = ":" }$1 ~ /imageName/ {print $1,$2}'
어떤 이유에서인지 저는 여기에 주어진 답을 사용할 수 없었습니다.저한테 효과가 있었던 건 이렇습니다.
docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi
awk '{print $3}'
중요한 부분입니다.세 번째 열에서 id를 추출합니다.
docker rmi $(docker image ls repo/image_name* | awk {'print $1":"$2'} )
이전에 게시되지 않은 이 질문에 대한 해결책을 제시해 보십시오.
현지에서 제작한 이미지를 일치시키고 싶었습니다.library/myapp
이름을 바꾸고 태그를 지정하고 비공개 레포로 밀어 넣었습니다.myrepo.org/library/myapp
. 일단 그들이 밀리면, 나는 그 지역 도커 레그를 치우고 싶습니다.
아무것도 발견되지 않거나 명령이 오류를 내던져도 상관없습니다.이렇게 추가된|| true
스크립트에 포함시키기 위해 마지막에.
docker rmi $(docker image ls */library/myApp --format '{{.Repository}}:{{.Tag}}') || true
이것을 시도해 보십시오.
docker images | grep 'DOCKER_IMAGE_NAME' | xargs -l bash -c 'docker rmi $0:$1' | xargs
docker image ls | grep 'repository-name' | awk '{ print $3 }' | while read -r line ; do docker image rm $line; done
이것은 현재 저에게 효과가 있습니다.
docker rmi $(docker images | awk '{if ($1 ~ "^image_prefix") print $1":"$2}')
사소한 언급: 우리가 경험한 바로는, 당신은 도커 18.03 이후로 더 이상 이름만으로 태그가 지정되지 않은 이미지를 제거할 수 없는 것 같습니다.위와 같이 name+tag를 사용하시거나 ID를 사용하셔야 합니다.
docker images --format={{.ID}} | xargs -I % sh -c 'docker rmi --force % 2>&1'
@Aditya의 답변을 바탕으로 이미지를 쉽게 삭제할 수 있는 bash 기능도 만들 수 있습니다.이 기능을 사용자의~/.profile
. 새 셸 세션을 만들거나 새 셸 세션을 생성합니다.source ~/.profile
.
function drmi() {
docker images | grep $1 | xargs docker rmi
}
용도:
drmi golang
정보:
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}" |grep imagename |grep none)
다음 오류가 발생합니다.
데몬의 오류 응답: 참조 형식이 잘못되었습니다.
아마도 내 이미지가 이렇게 생겼기 때문일 것입니다.
hostname:5000/imagename:<none>
image id를 사용하고 다음 명령을 수행해야 했습니다.
docker rmi `docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" |grep imagename |grep none |cut -d ' ' -f2`
종료된 컨테이너를 제거하려면:
docker container rm `docker container ls -a --format "{{.ID}} {{.Image}} {{.Status}}" |grep Exited |grep imagename|cut -d ' ' -f1`
선호하는 답변에 따라 대신 변수를 사용합니다.
docker rmi --force "$(docker images -q $repository | uniq)"
그리고 이것은 젠킨스 파이프라인에 사용될 수 있습니다.
sh(script: 'docker rmi --force "$(docker images -q $repository | uniq)"', returnStdout: true)
태그를 통해 제거하는 대신 이 옵션을 선호했습니다.
$ docker rmi test:latest
이것은 문서가 말하고 제가 확인한 바와 같이, "태그와 함께 이 명령을 매개 변수로 사용하면 태그만 제거됩니다. 이미지에 대한 태그만 있는 경우 이미지와 태그가 모두 제거됩니다."
마침내, 이것은 나에게 효과가 있었습니다.
셸: 도커 이미지 --형식 {% raw %}'{{.아이디}} - {{.리포지토리}}'{%endraw%} | grep {{app_name}} | cut -d'- -f1 | xargs docker rmi -f
{{ app_name}}은(는) 도커 이미지 이름의 정규 표현입니다.
저는 윈도우 사용자입니다, Jenkins 안에 bat로 위 솔루션을 수정해 보았습니다.오류가 나서 도움이 필요합니다.
cmd 안에서 수동으로 할 수 있습니다.
for /F "tokens=3" %a in ('docker images ^| findstr "my_image" ') do docker rmi %a
그러나 IMAGE_NAME = my_image로 Jenkins 파일 안에 구현했습니다.
bat " for /f \"tokens=3\" %%a in ('docker images ^^^| findstr \"${IMAGE_NAME}\" ') do docker rmi %%a "
내 젠킨스 노드 안에서 그것은
C:\Program Files\jenkins\workspace\my_image>for /F "tokens=3" %a in ('docker images ^| findstr "my_image" ') do docker rmi %a
번역은 매뉴얼 타입과 동일해서 괜찮아 보입니다.하지만 젠킨스의 결과는
"docker images" requires at most 1 argument.
'docker images --help'를 참조하십시오.
젠킨스 파일에서는 작동하지 않으면서 수동으로 작동하는 이유를 알고 있습니까?젠킨스가 findstr을 실행하지 않았다는 느낌이 듭니다.누군가가 무엇이 문제인지 지적해주면 좋을 것 같습니다.
로컬에서 이미지를 제거하기 위해 follow 명령을 사용했습니다. 작동했습니다!!
docker rmi imagename
이미지 이름을 하나의 인용문으로 사용했을 때는 효과가 없었습니다.
언급URL : https://stackoverflow.com/questions/40084044/how-to-remove-docker-images-based-on-name
'source' 카테고리의 다른 글
이달의 마지막 날을 찾기 위한 SQL 쿼리 (0) | 2023.10.31 |
---|---|
구성 관리자.앱 설정 캐싱 (0) | 2023.10.31 |
argparse store false(지정되지 않은 경우) (0) | 2023.10.31 |
WPML: wp_query()는 현재 게시물이 아닌 모든 언어의 게시물을 반환합니다. (0) | 2023.10.31 |
PowerShell 및 C#의 BigInt 불일치 (0) | 2023.10.31 |