모든 Docker 볼륨을 제거하는 방법은 무엇입니까?


94

를 수행하면 docker volume ls볼륨 목록은 다음과 같습니다.

DRIVER              VOLUME NAME
local               305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a
local               226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319
...
...
local               209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301

한 번에 모든 볼륨을 제거하고 싶습니다. 어떻게하니?

답변:


194

사용하지 않는 모든 데이터 (컨테이너가없는 볼륨 포함)를 제거하는 공식 명령은 docker 1.13과 함께 제공됩니다.

docker system prune  

볼륨 만 제한하려면 사용하지 않는 볼륨 만 제거하십시오 .

docker volume prune

또한이 docker image prune, docker container prune등 :
자세한 '에서 자두하지 않는 도커 객체를 ".

커밋 86de7c0PR 26108을 참조하십시오 .

play-with-docker.com 에서 실제 동작을 볼 수 있습니다 .

/ # docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
1296a5e47ef3        hello-world         "/hello"            7 seconds ago       Exited (0) 6 seconds ago                       prickly_poincare

/ # docker system  prune
WARNING! This will remove:
        - all stopped containers
        - all volumes not used by at least one container
        - all networks not used by at least one container
        - all dangling images
Are you sure you want to continue? [y/N] y
Deleted Containers:
1296a5e47ef3ab021458c92ad711ad03c7f19dc52f0e353f56f062201aa03a35

볼륨을 관리하는 전류 (미리 고정 표시기 1.13) 방식이 도입 된 PR 14242와 docker volume명령 , 어떤 문서 의 코멘트에 년 7 월 2015 :

docker volume rm $(docker volume ls -q --filter dangling=true)

감사합니다. 나는 새로운 prune명령 에 대해 몰랐다 .
treeface

3
가지 치기 명령은 훌륭하지만 조심해야합니다. 컨테이너를 호출 할 때 컨테이너가 실행 중이라고 가정하는 것 같습니다. 연결되어 있지만 활발하게 사용되지 않는 항목 (예 : 네트워크)을 제거하여 다음에 기존 컨테이너가 시작될 때 오류를 발생시킵니다. dangling무엇을 잘라낼 수 있는지 확실하지 않은 경우 미리 필터를 사용하십시오. :)
jocull

docker system prune로컬 볼륨을 제거하지 않는 것 같지만 docker volume prune분류
Maciek Rek

23

2017 년에 수정 됨 :이 답변은 '16 년 4 월 16 일에 제공되었으며 현재는 구식이며 1.13 이전의 도커 버전에 대해서만 정확합니다. @VonC의 답변을 사용하십시오. 이제 올바른 것으로 표시됩니다.

사용하지 않는 볼륨을 삭제하려면 내장 된 docker volume rm명령을 사용할 수 있습니다 . 이 rm명령은 또한 /var/lib/docker/volumes볼륨이 아닌 디렉토리를 삭제 하므로 저장하려는 항목을 거기에 넣지 않았는지 확인
하십시오.

$ docker volume ls -qf dangling=true

대청소:

$ docker volume rm $(docker volume ls -qf dangling=true)

ls에 대한 자세한 내용은 여기 , rm에 대한 정보는 여기


1
--dry-run매개 변수를 사용 하여 매달린 볼륨 목록을 먼저 테스트하지 않고는 실행하지 않습니다 .
Sergei Rodionov 2016

--dry-run옵션 이 없습니다 .
Harald Albers 2016

1
이 대답은 무엇이든 상관없이 모든 볼륨을 삭제하려는 경우입니다. 감사!
Mücahit Yılmaz

5

이것이 내가 유용하다고 생각한 것입니다 : https://github.com/chadoe/docker-cleanup-volumes

/ var / lib / docker / volumes 및 / var / lib / docker / vfs / dir Docker 버전 1.4.1에서 최대 1.11.x까지 고아 Docker 볼륨을 삭제하는 셸 스크립트

기본적으로 고아 / 매달린 볼륨을 정리하지만 a를 포함 --dry-run하지만 일부 docker 포함 명령도 기록합니다 (이전 주석에서 참조)

Docker 1.9 이상에 대한 참고 사항

Docker 1.9 이상에서 고아 볼륨을 삭제하려면이 docker-cleanup-volumes 스크립트 대신 기본 제공 Docker 볼륨 명령을 사용할 수도 있습니다. 내장 명령은 또한 볼륨이 아닌 / var / lib / docker / volumes의 디렉토리를 삭제하므로 저장하려는 항목을 넣지 않았는지 확인하십시오.

명부:

$ docker volume ls -qf dangling=true

대청소:

$ docker volume rm $(docker volume ls -qf dangling=true)

또는 작동하지 않는 것이 좋지만 Linux에만 해당됩니다.

$ docker volume ls -qf dangling=true | xargs -r docker volume rm

3

질문에 답하고 Marc에게서 빌리면 다음과 같이 작동합니다.

$ docker volume rm $(docker volume ls -qf dangling=true | xargs)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.