Mam problemy z usuwaniem woluminów Dockera za pomocą Dockera 1.9.1.
Usunąłem wszystkie moje zatrzymane kontenery, więc docker ps -a
wracają puste.
Kiedy używam docker volume ls
, otrzymuję cały szereg kontenerów Docker:
docker volume ls
DRIVER VOLUME NAME
local a94211ea91d66142886d72ec476ece477bb5d2e7e52a5d73b2f2f98f6efa6e66
local 4f673316d690ca2d41abbdc9bf980c7a3f8d67242d76562bbd44079f5f438317
local eb6ab93effc4b90a2162e6fab6eeeb65bd0e4bd8a9290e1bad503d2a47aa8a78
local 91acb0f7644aec16d23a70f63f70027899017a884dab1f33ac8c4cf0dabe5f2c
local 4932e2fbad8f7e6246af96208d45a266eae11329f1adf176955f80ca2e874f69
local 68fd38fc78a8f02364a94934e9dd3b5d10e51de5b2546e7497eb21d6a1e7b750
local 7043a9642614dd6e9ca013cdf662451d2b3df6b1dddff97211a65ccf9f4c6d47
#etc x 50
Ponieważ żaden z tych tomów nie zawiera niczego ważnego, staram się wyczyścić wszystkie tomy za pomocą docker volume rm $(docker volume ls -q)
.
W trakcie procesu większość jest usuwana, ale wracam:
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Za sporą część z nich. Jeśli w ogóle nie mam żadnych kontenerów, w jaki sposób są one wykorzystywane?
docker
docker-machine
Tkwon123
źródło
źródło
sudo service docker stop
isudo service docker start
) wyczyścił dla mnie wszystkie te woluminy-widma. Co więcej, wygląda na to, że mogę teraz bez problemu usuwać woluminy za pomocą polecenia docker rm -v. Jedyną godną uwagi różnicą w użytkowaniu jest to, że używam docker-compose na Ubuntu 15.10. Oddam raport, jeśli kiedykolwiek będę w stanie odtworzyć ten problem, ale poza tym wydaje się, że wystarczy prosty restart. Dzięki!service docker stop && rm -rf /var/lib/docker/volumes/TheVolumIdYouWantToRemove && service docker start
Odpowiedzi:
Możesz użyć tych funkcji, aby brutalnie usunąć wszystko, co dotyczy Dockera:
Możesz dodać je do swojego
~/Xrc
pliku, gdzie X jest twoim plikiem interpretera powłoki (~/.bashrc
jeśli używasz bash) i załadować je ponownie poprzez wykonaniesource ~/Xrc
. Możesz też po prostu skopiować i wkleić je do konsoli, a następnie (niezależnie od opcji, którą wybrałeś wcześniej, aby przygotować funkcje) po prostu uruchom:Jest to również przydatne do zwykłego czyszczenia Dockera. Pamiętaj, że spowoduje to również usunięcie obrazów, a nie tylko kontenerów (działających lub nie) i wszelkiego rodzaju woluminów.
źródło
docker volume rm
polecenie zawiodło. Z komentarzy wynika, że rozwiązaniem wydaje się być ponowne uruchomienie demona Dockera w celu naprawienia liczby odwołań.even after reboot it still says docker volume is in use..
armageddon
docker-compose down --volumes
jednak (zgodnie z sugestią @Robert K. Bell)Może wolumin został utworzony za pośrednictwem
docker-compose
? Jeśli tak, powinien zostać usunięty przez:Podziękowania dla Nielsa Becha Nielsena !
źródło
Jestem całkiem nowy w Dockerze. Sprzątałem początkowy bałagan podczas testów i nie byłem w stanie usunąć woluminu. Zatrzymałem wszystkie uruchomione instancje, wykonałem polecenie
docker rmi -f $(docker image ls -q)
, ale nadal otrzymałem plikError response from daemon: unable to remove volume: remove uuid: volume is in use
.Zrobiłem
docker system prune
i wyczyściłem to, co było potrzebne do usunięcia ostatniego woluminu:docker system prune
źródło
Objętość może być używana przez jeden z zatrzymanych pojemników. Możesz usunąć takie kontenery poleceniem:
następnie możesz usunąć nieużywane woluminy
źródło
Dopóki woluminy są skojarzone z kontenerem (działającym lub nie), nie można ich usunąć.
Musisz biec
na każdym z działających / niedziałających kontenerów, na których ten wolumin mógł zostać zamontowany.
Jeśli wolumin jest zamontowany na którymkolwiek z kontenerów, powinieneś zobaczyć go w sekcji Mounts w wyniku polecenia inspect . Coś takiego :-
Po ustaleniu odpowiedzialnego pojemnika (ów) użyj: -
docker rm -f container-1 container-2 ...container-n
w przypadku prowadzenia kontenerówdocker rm container-1 container-2 ...container-n
w przypadku niedziałających kontenerówaby całkowicie usunąć pojemniki z komputera hosta.
Następnie spróbuj usunąć wolumin za pomocą polecenia: -
docker volume remove <volume-name/volume-id>
źródło
docker container prune
się, że w większości przypadków wystarczy.Obecnie możesz użyć tego, co teraz oferuje docker, do ogólnego i bardziej kompleksowego czyszczenia:
Aby dodatkowo usunąć zatrzymane kontenery i wszystkie nieużywane obrazy (nie tylko wiszące obrazy), dodaj
-a
flagę do polecenia:źródło
Jestem prawie pewien, że te woluminy są faktycznie zamontowane w twoim systemie. Zajrzyj do / proc / mounts, a zobaczysz je tam. Prawdopodobnie będziesz musiał
sudo umount <path>
lubsudo umount -f -n <path>
. Powinieneś być w stanie uzyskać zamontowaną ścieżkę w / proc / mounts lub przezdocker volume inspect
źródło
Powinieneś wpisać to polecenie z flagą -f (force):
sudo docker volume rm -f <VOLUME NAME>
źródło