소개
Docker는 응용 프로그램 및 서비스를 컨테이너로 랩핑하여 어디에서나 실행할 수 있도록 만드는 것이 쉽습니다. 그러나 Docker를 사용하면 사용하지 않는 이미지, 컨테이너 및 데이터 볼륨이 불필요하게 많이 축적되어 출력을 혼란스럽게 만들고 디스크 공간을 소비하는 것도 쉽습니다.
Docker는 명령 줄에서 시스템을 정리하는 데 필요한 모든 도구를 제공합니다. 이 치트 시트 형식의 가이드는 사용하지 않는 Docker 이미지, 컨테이너 및 볼륨을 제거하여 디스크 공간을 확보하고 시스템을 정리하는 데 유용한 명령어에 대한 빠른 참조를 제공합니다.
이 가이드 사용 방법:
- 이 가이드는 자체 포함된 명령 줄 코드 스니펫으로 치트 시트 형식입니다.
- 완료하려는 작업과 관련된 섹션으로 이동하십시오.
참고: 명령어에서 사용된 command $(command)
대체 구문은 bash, zsh, 그리고 Windows Powershell과 같은 많은 인기있는 셸에서 사용할 수 있습니다.
도커 애플리케이션을 라이브 서버에 1번의 클릭으로 배포하려면 DigitalOcean App Platform을 살펴보세요.
사용되지 않거나 흔적이 없는 이미지, 컨테이너, 볼륨 및 네트워크 전체 삭제
도커는 태그가 지정되지 않거나 컨테이너와 연결되지 않은 자원인 흔적이 없는(not tagged or associated with a container) 이미지, 컨테이너, 볼륨 및 네트워크를 정리하는 단일 명령어를 제공합니다:
명령어에 -a
플래그를 추가하여 중지된 모든 컨테이너와 사용되지 않은 모든 이미지(흔적이 없는 이미지뿐만 아니라)를 제거할 수 있습니다:
도커 이미지 삭제
하나 이상의 특정 이미지 제거
docker images
명령어에 -a
플래그를 사용하여 삭제할 이미지의 ID를 찾습니다. 이렇게 하면 모든 이미지, 중간 이미지 레이어를 포함하여 보여줍니다. 삭제할 이미지를 찾으면 ID나 태그를 docker rmi
에 전달할 수 있습니다.
목록:
삭제:
주의: docker images
명령어의 -a
또는 --all
플래그는 모든 Docker 이미지를 보여줍니다. 이는 태그로 참조되지 않은 중간 이미지도 포함합니다. 기본적으로, docker images
는 적어도 하나의 태그를 가진 이미지만 보여줍니다. 그러나 태그가 없는 이미지들이 시스템에 디스크 공간을 차지하고 있을 수도 있습니다. -a
플래그는 디스크 공간을 절약하기 위해 삭제할 수 있는 이미지를 식별하는데 도움이 될 수 있습니다. docker rmi
명령어와 함께 사용할 때, -f
또는 --force
플래그를 사용하여 태그가 없는 이미지를 삭제할 수도 있습니다.
허리딩 Docker 이미지 삭제
Docker 이미지는 여러 레이어로 구성되어 있습니다. 허리딩(hanging) 이미지는 태그가 없는 이미지와 관계가 없는 레이어들을 의미합니다. 이 이미지들은 더이상의 목적을 갖고 있지 않고 디스크 공간을 차지합니다. docker images
명령어에 -f
필터 플래그를 dangling=true
값으로 추가하여 찾을 수 있습니다. 삭제하고자 한다면 docker image prune
명령어를 사용할 수 있습니다:
참고: 태그를 붙이지 않고 이미지를 빌드하면 태그가 없기 때문에 떠다니는 이미지 목록에 표시됩니다. 빌드할 때 태그를 제공하여 이 상황을 피할 수 있으며, 이미지에 docker tag
명령을 사용하여 나중에 태그를 할당할 수 있습니다.
목록:
제거:
패턴에 따라 이미지 제거
docker images
와 grep
의 조합을 사용하여 패턴과 일치하는 모든 이미지를 찾을 수 있습니다. 만족스러운 경우 awk
를 사용하여 ID를 docker rmi
에 전달하여 삭제할 수 있습니다. 이러한 유틸리티는 Docker에서 제공되지 않으며 모든 시스템에서 필요하지 않을 수 있습니다:
목록:
제거:
모든 이미지 제거
시스템의 모든 Docker 이미지는 docker images
명령에 -a
를 추가하여 나열할 수 있습니다. 모두 삭제하려는지 확인한 후에는 이미지 ID를 docker rmi
에 전달하기 위해 -q
플래그를 추가할 수 있습니다:
목록:
제거:
컨테이너 제거
하나 이상의 특정 컨테이너 제거
-a
플래그를 사용하여 삭제하려는 컨테이너의 이름 또는 ID를 찾기 위해 docker ps
명령을 사용하세요:
목록:
제거:
종료시 컨테이너 제거
실행하고 삭제:
종료된 모든 컨테이너 제거
완료 후 유지하지 않을 컨테이너를 만들 때, docker run --rm
을 실행하여 자동으로 삭제할 수 있습니다.
목록:
제거:
여러 필터 사용하여 컨테이너 제거
created
(유효하지 않은 명령으로 컨테이너를 실행할 때 발생할 수 있는 상태) 또는 exited
로 표시된 모든 컨테이너를 삭제하려면 두 개의 필터를 사용할 수 있습니다:
목록:
제거:
패턴에 따라 컨테이너 제거
docker ps
와 grep
을 조합하여 패턴과 일치하는 모든 컨테이너를 찾을 수 있습니다. 원하는 목록을 얻었다고 확신하면 awk
와 xargs
를 사용하여 docker rm
에 ID를 제공할 수 있습니다. 이러한 유틸리티는 Docker에서 제공되지 않으며 모든 시스템에서 사용 가능하지는 않을 수 있습니다:
목록:
제거:
모든 컨테이너를 중지하고 제거하세요.
시스템의 컨테이너를 docker ps
명령어로 확인할 수 있습니다. -a
플래그를 추가하면 모든 컨테이너가 표시됩니다. 삭제하려고 확신할 때 docker stop
및 docker rm
명령에 ID를 제공하기 위해 -q
플래그를 추가할 수 있습니다:
목록:
제거:
볼륨 제거
하나 이상의 특정 볼륨을 제거합니다.
docker volume ls
명령을 사용하여 삭제하려는 볼륨 이름을 찾을 수 있습니다. 그런 다음 docker volume rm
명령을 사용하여 하나 이상의 볼륨을 제거할 수 있습니다:
목록:
제거:
매달린 볼륨 제거하기
볼륨의 목적은 컨테이너와 독립적으로 존재하는 것이므로 컨테이너가 제거되면 볼륨은 자동으로 제거되지 않습니다. 볼륨이 존재하고 더 이상 어떤 컨테이너에도 연결되지 않을 때 이를 매달린 볼륨이라고 합니다. 이러한 볼륨을 확인하고 제거하려면 docker volume ls
명령을 사용하여 결과를 매달린 볼륨으로 제한하는 필터를 적용할 수 있습니다. 목록을 확인한 후에는 모두 제거할 수 있습니다. docker volume prune
을 사용하세요:
목록:
제거:
컨테이너와 해당 볼륨 제거하기
이름이 없는 볼륨을 생성하면 -v
플래그와 함께 컨테이너와 동시에 삭제할 수 있습니다. 이는 이름이 없는 볼륨에만 해당됩니다. 컨테이너가 성공적으로 제거되면 해당 ID가 표시됩니다. 볼륨의 제거에 대한 언급이 없습니다. 이름이 없으면 시스템에서 조용히 제거됩니다. 이름이 지정된 경우 조용히 남아 있습니다.
제거:
결론
이 가이드는 Docker를 사용하여 이미지, 컨테이너 및 볼륨을 제거하는 데 사용되는 몇 가지 일반적인 명령을 다룹니다. 각각에 사용할 수 있는 많은 다른 조합과 플래그가 있습니다. 사용 가능한 내용에 대한 포괄적인 가이드는 Docker 문서에서 docker system prune
, docker rmi
, docker rm
, 및 docker volume rm
을 참조하십시오. 가이드에 보고 싶은 공통 정리 작업이 있으면 댓글에서 요청하거나 제안하십시오.
Docker 컨테이너의 다른 구성 요소를 자세히 살펴보려면 Docker 생태계: 일반 구성 요소 소개를 확인하십시오.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes