Каков наилучший способ создания чистого листа с вашими контейнерами 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
.