Проблемы c Docker
Не удаляется мертвый контейнер
Способ 1
Итак, если вы получите сообщение вроде этого:
Error response from daemon: Cannot destroy container elated_wozniak: Driver devicemapper failed to remove root filesystem 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3: Device is Busy
просто запустите это:
$ umount /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
Способ 2
Вы также можете удалить контейнеры dead с помощью этой команды
$ docker rm $(docker ps --all -q -f status=dead)
Способ 3
Ошибка: Error response from daemon: driver "overlay" failed to remove root filesystem for
3.1. Проверьте, какие другие процессы также используют ресурсы докеров
$ grep docker /proc/*/mountinfo
который выводит что-то вроде этого, где число после /proc/ равно pid:
/proc/10001/mountinfo:179...
/proc/10002/mountinfo:149...
/proc/12345/mountinfo:159 149 0:36 / /var/lib/docker/overlay/...
3.2. Проверьте имя процесса выше pid
$ ps -p 10001 -o comm=
dockerd
$ ps -p 10002 -o comm=
docker-containe
$ ps -p 12345 -o comm=
nginx <<<-- This is suspicious!!!
Итак, nginx с pid 12345, похоже, также использует /var/lib/docker/overlay/..., поэтому мы не можем удалить связанный контейнер и получить ошибку device or resource busy. (См. здесь для обсуждения того, как nginx разделяет одно и то же пространство имен монтирования с контейнерами докеров, тем самым предотвращает его удаление.)
3.3. Остановить nginx,
$ service nginx stop
3.4. Удалить контейнер успешно.
$ docker rm <container-id>
3.5 Запустить процесс
$ service nginx start
3.6 Если процессов много, то лучше перезагрузить систему