Мы размещаем собственный сервер Discourse на DigitalOcean с диском объёмом 25 ГБ. Недавно я попытался обновить образ Discourse, но получил сообщение о том, что для продолжения необходимо больше места. После очистки образов Docker и контейнеров нам всё ещё не хватает 0,4 ГБ.
Есть ли какие-либо советы по освобождению места? Как для выполнения обновления сейчас, так и для экономии места в будущем. Я понимаю, что скоро потребуется увеличить размер диска, но было бы полезно пережить хотя бы ещё одно обновление образа Discourse.
Важно понимать, почему появляются промежуточные непомеченные образы, отображаемые как <none> <none>, чтобы избежать их появления, так как, как вы уже заметили, вы не можете удалить их, если они используются.
Причина появления непомеченных образов заключается в том, что вы собрали образ, затем изменили Dockerfile и снова собрали этот образ, при этом были переиспользованы некоторые слои из предыдущей сборки. Теперь у вас есть непомеченный образ, который нельзя удалить, поскольку некоторые его слои используются новой версией этого образа.
Решение состоит в следующем:
Удалите новую версию образа
Удалите непомеченный образ и
Пересоберите новую версию образа, чтобы он владел всеми слоями.
В результате у вас останется один помеченный образ, содержащий все слои предыдущих непомеченных образов и нового образа.
Я не ожидал найти 2,64 ГБ в образе Docker , поэтому сейчас пытаюсь разобраться, что происходит. Если этот образ мне вообще не нужен, то нам точно далеко до необходимости изменять размер.
Как долго? Я не вижу никаких намёков на это — я точно знаю, что счастливо работаю с одним форумом на 20 ГБ и другим на 25 ГБ.
В каталоге shared у вас, вероятно, много данных резервных копий (возможно, в shared/standalone/backups/default). Также у вас могут быть старые копии базы данных или старые файлы журналов. Я рекомендую выполнить du -kx / | sort -n | tail -49
или аналогичную команду.
Стоит отметить, что можно сэкономить время, потратив больше денег, перейдя на инстанс большего размера. Или же можно сделать обратный выбор.
Это меня немного беспокоит. DO, возможно, поможет вам с резервным копированием всей системы, но, если бы я был на вашем месте, я бы хотел знать, как делать резервные копии Discourse и как получить безопасную локальную копию. А также как удалять старые резервные копии. (Если по какой-то несчастью DO удалит ваш экземпляр и вашу учётную запись, ваши данные должны пережить это.)
Мы тоже используем функционал резервного копирования Discourse, и я понял, что мы не очищали старые резервные копии там.
Ну, я удалил все, кроме самой последней резервной копии, используя интерфейс Discourse, а также загрузил самую новую резервную копию на свой локальный диск. Это привело меня к тому, что осталось менее 100 МБ до того, чтобы иметь достаточно места.
Вот что я получаю при запуске этой команды в var/discourse
Где {image_name} — имя образа, который вы хотите удалить. Вы также можете использовать ID образа для удаления (например, docker rmi {image_id}). Это то, что вам нужно будет использовать для удаления образа с именем <none>.
Например, предположим, что у вас есть следующие образы:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-new-image latest c18f86ab8daa 12 seconds ago 393MB
<none> <none> b1ee72ab84ae About a minute ago 393MB
my-image latest f5a5f24881c3 2 minutes ago 393MB
Возможно, что образ <none> нельзя удалить, потому что my-new-image использует некоторые слои из него. Что вам нужно сделать:
Это удаляет my-new-image:latest, который переиспользует слои из образа <none>. Затем удаляется образ <none> с использованием его ID b1ee72ab84ae. Наконец, пересобирается my-new-image, создавая все необходимые слои.
Также проверьте, нет ли остановленных контейнеров, которые всё ещё используют непомеченный образ <none>. Используйте docker ps -a, чтобы увидеть все образы, включая те, которые завершили работу. Если такие есть, используйте docker rm {container_id} для удаления контейнера, а затем попробуйте снова удалить образ <none>.
Я всё ещё хочу разобраться с проблемой образа <none> (ведь абсурдно, что он занимает более 2 ГБ), но вы решили мою самую срочную проблему — создание достаточного места для обновления! Спасибо!!