3

Моя история

Когда-то я звонил в Docker из очереди PHP, чтобы обработать тысячи медиа-файлов. Мой код создавал бы новый контейнер для каждой задачи, которую я хотел выполнить (например, "process", "search", "slice" и т.д.). Потом я лег спать и произошла катастрофа. Я проснулся с файлом журнала объемом 1 ТБ и несколькими сотнями тысяч контейнеров в разных штатах.

Докер больше не работает. Например, когда я docker version (или docker anything в этом роде), он просто сидит и смотрит. Я не могу удалить контейнеры через стандартный docker rm $(docker ps -a -q) потому что Docker очень, очень подавлен.

Вот соответствующая информация о том, как я сейчас вызываю демона:

$> sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock
INFO[0000] [graphdriver] using prior storage driver "aufs"

(Meanwhile in another terminal)
$> docker version
(insert infinite darkness here)

Мои вопросы

  1. Как я могу удалить Docker-контейнеры, если Docker-демон не отвечает?

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

1 ответ1

0

Ну, я немного покопался.

Как я могу удалить Docker-контейнеры, если Docker-демон не отвечает?

В Ubuntu контейнеры хранятся в каталоге /var/lib/docker/containers . Удалите содержимое этого каталога, и все станет намного лучше.

Кроме того, для любого любопытного, было около 250 тыс. Контейнеров, которые должны были быть удалены. Учитывая количество файлов, я должен был пойти с ls /var/lib/docker/containers | xargs -n200 rm -rf

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

Если контейнер больше не будет использоваться, вы должны официально "удалить" его после того, как закончите. В командной строке это можно сделать с помощью docker rm $(containername) а в коде это будет полностью зависеть от того, как осуществляется доступ к docker.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .