programing

도커의 이미지를 삭제하려면 어떻게 해야 합니까?

instargram 2023. 8. 10. 18:13
반응형

도커의 이미지를 삭제하려면 어떻게 해야 합니까?

다음과 같은 이미지가 있습니다.

alex@alexvps:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              70c0e19168cf        5 days ago          1.069 GB
<none>              <none>              c2ce80b62174        8 days ago          399.2 MB
<none>              <none>              60afe4036d97        8 days ago          325.1 MB

그 중 하나를 제거하려고 하면 다음과 같은 결과가 나옵니다.

alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images

어떻게 제거할 수 있습니까?왜 그런 갈등이 있는 거지?

모든 이미지를 삭제하려면 지정된 명령을 사용합니다.

docker rmi $(docker images -q)

모든 컨테이너를 삭제하려면 지정된 명령을 사용합니다.

docker rm $(docker ps -a -q)

경고:그러면 모든 이미지와 컨테이너가 파괴됩니다.복원할 수 없습니다!

이 솔루션은 Techoverflow.net 에서 제공합니다.

가능한 이유:이 이미지가 현재 실행 중인 컨테이너에서 사용되고 있기 때문일 수 있습니다.이러한 경우 실행 중인 용기를 나열하고 관련 용기를 중지한 다음 이미지를 제거할 수 있습니다.

docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>

도커에서 컨테이너를 찾을 수 없는 경우 이를 사용하여 이미 종료된 모든 컨테이너를 나열하고 제거할 수 있습니다.

docker ps -a | grep 60afe4036d97
docker rm <containerid>

참고: 사용 시 종료된 모든 용기를 한 번에 삭제해야 합니다.Volume-Only용기이것들은 머무릅니다.Exit상태. 그러나 유용한 데이터가 포함되어 있습니다.

태그가 에 생성된 이 는 오류다발이해이없생컨여때존니입문기전하재히가너테이성에 있을 수 있기 때문입니다.exitedimages.state에서 된 모든 . 따라서 해당 이미지에 생성된 모든 컨테이너를 중지하고 삭제했는지 확인해야 합니다.다음 명령은 실행 중이지 않은 모든 컨테이너를 제거하는 데 도움이 됩니다.

docker rm `docker ps -aq --no-trunc --filter "status=exited"`

않는 비중간적인 것을 합니다.<none>이미지:

docker rmi `docker images --filter 'dangling=true' -q --no-trunc`

참고: 실행 중인 모든 용기를 중지하려면:

docker stop `docker ps -q`

이미지는 현재 실행 중인 컨테이너에서 사용할 수 있으므로 먼저 컨테이너를 중지하고 제거해야 합니다.

docker stop <container-name>
docker rm <container-id>

그런 다음 이미지를 삭제할 수 있습니다.

docker rmi <image-id>

이 이미지가 다른 이미지에 종속되지 않는지 확인해야 합니다(그렇지 않으면 먼저 삭제해야 합니다).

제가 가 없었습니다. 저는 더 이상 살아있는 컨테이너가 없었습니다.docker ps -a아무것도 반환하지 않았습니다). 하지만 이미지와 이미지 의존성을 삭제할 수 없었습니다.

이러한 특수한 경우를 해결하려면 다음을 사용하여 이미지를 강제로 제거할 수 있습니다.

docker rmi -f <image-id>

배시에서:

for i in `sudo docker images|grep \<none\>|awk '{print $3}'`;do sudo docker rmi $i;done

이름이 "<없음>"인 모든 이미지가 제거됩니다.저는 그 이미지들이 불필요하다는 것을 알았습니다.

다음 명령에서 답을 찾았습니다.

docker images --no-trunc | grep none | awk '{print $3}' | xargs docker rmi

사용 중인 일부 이미지를 삭제했을 때 문제가 발생했습니다. (사용)docker ps -a).

0 ( 1월) 1..0 (2017년 1월)system prune명령:

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
-a, --all     Remove all unused images not just dangling ones
-f, --force   Do not prompt for confirmation
    --help    Print usage

Sunny의 답변 외에도:

PowerShell 창에서 Windows 컴퓨터(Windows용 Docker 포함)의 모든 이미지를 삭제하려면 다음 작업을 수행합니다.

docker images -q | %{docker rmi -f $_}

PowerShell 창에서 Windows 컴퓨터(Windows용 Docker 포함)의 모든 컨테이너를 삭제하려면 다음 작업을 수행합니다.

docker ps -a -q | %{docker rm -f $_}

간단히 추가할 수 있습니다.--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입니다.

그리고.docker images$3은 세 번째 열, 즉 도커 이미지 ID입니다.

에서는 다음과 같습니다.sudo명령을 실행할 수 있는 권한이 없는 경우에 사용됩니다.오류가 발생하면 제거해 보십시오.sudo.

먼저, 다음 명령을 사용하여 모든 용기를 제거합니다.

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

그런 다음 다음 명령을 사용하여 ID로 이미지를 제거합니다.

sudo docker rmi <image-id>

사용하다

docker image prune -all

또는

docker image prune -a

매달린 이미지를 모두 제거합니다.-a를 지정하면 컨테이너에서 참조하지 않는 모든 이미지도 제거됩니다.

참고: 자르기가 제거되기 전에 확인 메시지가 표시되지만 제거될 수 있는 항목의 목록은 표시되지 않습니다.게다가.docker image ls에서는 음의 필터링을 지원하지 않으므로 실제로 제거될 이미지를 예측하기가 어렵습니다.

도커의 가지치기 설명서에 명시된 대로입니다.

먼저 해당 이미지에 생성된 불필요한 모든 용기를 중지/삭제해야 합니다.

확인:오래된 도커 컨테이너를 제거하는 방법.

그런 다음 @marcell 솔루션을 사용합니다.

모든 용기를 제거합니다.

docker ps -q -a | xargs docker rm

모든 도커 이미지 강제 제거

docker rmi -f $(docker images -f dangling=true -q)

태그가 지정되지 않은 모든 영상을 제거하는 명령의 가장 컴팩트한 버전은 다음과 같습니다.

docker rmi $(docker images | grep "^<none>" | awk '{print $"3"}')

일부 도커 이미지를 삭제하려면 다음 명령을 실행해야 합니다.

$ docker rmi <docker_image_id>

따라서 모든 도커 이미지를 삭제하려면 다음 명령을 실행합니다.

$ docker rmi $(docker images -q)

모든 포함)를하면 됩니다.-f예:

$ docker rmi -f $(docker images -q)

중인 할 수 .meltwater/docker-cleanup.

그렇게 하면 손으로 치울 필요가 없습니다.

그냥 실행:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

30분마다 실행됩니다(또는 DELETY_를 사용하여 설정한 시간).TIME=vmx 옵션) 및 종료된 용기와 이미지를 정리합니다.

자세한 정보: https://github.com/meltwater/docker-cleanup/blob/master/README.md

언급URL : https://stackoverflow.com/questions/21398087/how-can-i-delete-dockers-images

반응형