가장 확실하고 간단한 방법

docker-compose.yml 파일이 있는 디렉토리에서 아래 명령어를 실행하세요.

docker-compose down --volumes --rmi all

이 명령어 하나로 해당 docker-compose.yml 파일로 생성된 거의 모든 리소스를 한번에 삭제할 수 있습니다.

  • down: 컨테이너를 중지하고 제거하며, 연결된 네트워크도 함께 제거합니다.
  • --volumes (또는 -v): 컨테이너가 사용하던 볼륨(Volume)을 삭제합니다. 데이터베이스 데이터 등 영구 데이터가 저장되는 곳이므로, 완전히 초기화하고 싶을 때 반드시 포함해야 합니다.
  • --rmi all: 해당 Compose 파일에서 사용한 모든 이미지를 삭제합니다. 디스크 공간을 확보하는 데 가장 효과적입니다. (--rmi local 옵션은 사용자 정의 태그가 없는 이미지만 삭제합니다.)

폴더명이 바뀐 경우 Docker Compose 리소스 삭제 방법

backend 폴더에서 docker-compose up으로 리소스를 생성했는데, 이제는 폴더명이 be로 바뀐 상태에서 그 리소스를 중지하고 삭제하고 싶으시군요.

이 문제는 Docker Compose가 기본적으로 폴더명을 프로젝트 이름으로 사용하기 때문에 발생합니다. be 폴더에서 down 명령을 실행하면 Docker는 be라는 이름의 프로젝트를 찾으려고 하지만, 실제 리소스는 backend라는 이름으로 생성되어 있기 때문이죠.

해결 방법은 간단합니다. down 명령을 실행할 때 원래 프로젝트 이름(backend)을 직접 지정해주면 됩니다.

be 폴더로 이동한 후, -p (또는 --project-name) 옵션을 사용해 아래 명령어를 실행하세요.

# be 폴더 안에서 실행합니다.
docker-compose -p backend down --volumes
  • -p backend: 이 부분이 핵심입니다. 현재 폴더명(be) 대신, 제어하고 싶은 리소스의 원래 프로젝트 이름이 backend였다고 Docker Compose에 명시적으로 알려주는 역할을 합니다.
  • down --volumes: backend 프로젝트에 속한 컨테이너, 네트워크, 볼륨을 모두 중지하고 깨끗하게 삭제합니다.

이 명령어 하나면 be 폴더 내에서 backend 시절에 만들었던 모든 리소스를 완벽하게 마무리할 수 있습니다.

시스템 전체의 불필요한 리소스 정리 (추가 작업)

위의 명령어를 실행한 후에도 다른 프로젝트에서 사용했거나, 정상적으로 삭제되지 않고 남겨진 "고아(orphaned)" 리소스가 있을 수 있습니다. 이럴 땐 docker system prune 명령어로 시스템 전체를 청소할 수 있습니다.

docker system prune

이 명령어는 현재 사용 중이지 않은 아래의 리소스들을 모두 삭제합니다.

  • 중지된 컨테이너
  • 사용하지 않는 네트워크
  • 댕글링(dangling) 이미지 (어떤 컨테이너도 사용하지 않는 중간 계층 이미지)
  • 댕글링 빌드 캐시

⚠️ 가장 강력한 시스템 전체 삭제 (주의 필요)

만약 시스템에 있는 **사용하지 않는 모든 리소스(다른 프로젝트 포함)**를 삭제하고 싶다면 아래 명령어를 사용하세요.

Bash
 
docker system prune -a --volumes
  • -a: 중지된 컨테이너뿐만 아니라, 사용하지 않는 모든 이미지까지 삭제합니다.
  • --volumes: 사용하지 않는 모든 볼륨을 삭제합니다.

이 명령어는 현재 실행 중인 컨테이너를 제외한 모든 도커 리소스를 삭제할 수 있으므로, 다른 중요한 프로젝트의 데이터가 날아가지 않도록 주의해서 사용해야 합니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기