Остановите и удалите все контейнеры докеров

Каков наилучший способ создания чистого листа с вашими контейнерами Docker? Много раз я чувствую, что легче начать с нуля, но у меня есть куча контейнеров, которые я не уверен, что такое их состояния, тогда, когда я запускаю docker rm это не позволит мне, потому что контейнер докеров все еще может быть в использовать.

Ответ 1

Остановите все контейнеры

docker stop $(docker ps -a -q)

Удалить все контейнеры

docker rm $(docker ps -a -q)

Найти больше команд здесь

Ответ 2

Докер представил новые пространства имен и команды, которые каждый должен наконец изучить и не придерживаться старых habbits.

Удаление ненужных контейнеров (остановлено)

$ docker container prune


Удаление ненужных изображений

это означает, что он удаляет только изображения, которые не помечены и не указываются "последними", поэтому никакие реальные изображения, которые вы можете регулярно использовать, удаляются. $ docker image prune


Удалите все тома, которые не используются никаким существующим контейнером

(даже остановленные контейнеры требуют объемы). Это обычно очищает оборванные анодные объемы контейнеров, которые были удалены давно. Он никогда не должен удалять именованные тома, так как контейнеры из них должны существовать/выполняться. Будьте осторожны, убедитесь, что ваш стек, по крайней мере, работает, прежде чем идти с этой docker volume prune


То же самое для неиспользуемых сетей

docker network prune


И, наконец, если вы хотите избавиться, если весь мусор - чтобы ничего не происходило с вашей продукцией, убедитесь, что все стеки запущены, а затем запустите

docker system prune

Ответ 3

Вот хороший смысл, который я использую для такого рода вещей: по этой ссылке люди, похоже, не любят (https://gist.github.com/bastman/5b57ddb3c11942094f8d0a97d461b430)

удалять тома

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

удалять сети

$ docker network ls  
$ docker network ls | grep "bridge"   
$ docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }')

удалить изображения докеров

//см.: fooobar.com/questions/53400/...

$ docker images
$ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
$ docker images | grep "none"
$ docker rmi $(docker images | grep "none" | awk '/ / { print $3 }')

удалять контейнеры докеров

//см.: fooobar.com/questions/53400/...

$ docker ps
$ docker ps -a
$ docker rm $(docker ps -qa --no-trunc --filter "status=exited")

По сути, вы хотите убить все запущенные контейнеры, удалить все изображения, удалить докеры, переустановить нужную версию, и это должно быть примерно так же чисто, как и сланца.

Ответ 4

docker ps -aq | xargs docker stop | xargs docker rm

или же

docker ps -aq | xargs docker rm -f

Ответ 5

В ubuntu я просто убил все процессы, когда другие решения не работали.

$ ps aux | grep docker
$ sudo kill {enter process id here}

Я не рекомендую это делать. Я переустанавливал вашу ОС, когда эта команда сэкономила некоторое время для исправления моих проблем с контейнерами.

Ответ 6

Один лайнер:

docker rm -f $(docker ps -a -q)

Если вы хотите выполнять только запущенные, удалите -a.