Есть советы, как сэкономить место?

Мы размещаем собственный сервер Discourse на DigitalOcean с диском объёмом 25 ГБ. Недавно я попытался обновить образ Discourse, но получил сообщение о том, что для продолжения необходимо больше места. После очистки образов Docker и контейнеров нам всё ещё не хватает 0,4 ГБ.

Есть ли какие-либо советы по освобождению места? Как для выполнения обновления сейчас, так и для экономии места в будущем. Я понимаю, что скоро потребуется увеличить размер диска, но было бы полезно пережить хотя бы ещё одно обновление образа Discourse.

Вы храните резервные копии локально?
Если да, возможно, удаление нескольких старых копий поможет. 0,4 ГБ (т. е. 400 МБ) должно быть приемлемо.

Также вы можете попробовать освободить место на хост-системе.

Попробуйте перезагрузить сервер, а затем повторите попытку, если вы уверены, что есть достаточно места.

Мы используем функциональность резервного копирования DigitalOcean. Я не видел варианта для ручного удаления одной из наших резервных копий.

Как мне это сделать? У меня нет опыта программирования, но я способен понять, что нужно делать и зачем, после получения инструкций.

Перезагрузил, но изменений нет.

После выполнения команды sudo du -h --max-depth 1 вот мои результаты:

Попробуйте удалить неиспользуемые объекты Docker

На данном этапе я бы избавил себя от лишних хлопот и сделал работу по изменению размера прямо сейчас.

Я удалил всё, кроме неиспользуемых томов, так как docker volume ls показал, что у нас есть только один.

Вы пробовали?

./launcher cleanup

Да!

Я всё же немного углубился в наши образы Docker с помощью команды docker images -a и увидел это.

Что происходит с <none>?

Поиск в Google привёл меня к очень интересному комментарию.

rofranoДжон Рофрано

Ноябрь '17

Важно понимать, почему появляются промежуточные непомеченные образы, отображаемые как <none> <none>, чтобы избежать их появления, так как, как вы уже заметили, вы не можете удалить их, если они используются.

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

Решение состоит в следующем:

  • Удалите новую версию образа
  • Удалите непомеченный образ и
  • Пересоберите новую версию образа, чтобы он владел всеми слоями.

В результате у вас останется один помеченный образ, содержащий все слои предыдущих непомеченных образов и нового образа.

~jr

Я не ожидал найти 2,64 ГБ в образе Docker , поэтому сейчас пытаюсь разобраться, что происходит. Если этот образ мне вообще не нужен, то нам точно далеко до необходимости изменять размер.

Вы выполняли команду

./launcher cleanup

Но я рекомендую изменить размер. Меня удивляет, что вы продержались так долго с 25 ГБ.

Также вы смотрели в shared/backups/default?

Я бы точно не стал полагаться на резервные копии DigitalOcean как на способ резервного копирования вашего форума.

Как долго? Я не вижу никаких намёков на это — я точно знаю, что счастливо работаю с одним форумом на 20 ГБ и другим на 25 ГБ.

В каталоге shared у вас, вероятно, много данных резервных копий (возможно, в shared/standalone/backups/default). Также у вас могут быть старые копии базы данных или старые файлы журналов. Я рекомендую выполнить
du -kx / | sort -n | tail -49
или аналогичную команду.

Стоит отметить, что можно сэкономить время, потратив больше денег, перейдя на инстанс большего размера. Или же можно сделать обратный выбор.

Это меня немного беспокоит. DO, возможно, поможет вам с резервным копированием всей системы, но, если бы я был на вашем месте, я бы хотел знать, как делать резервные копии Discourse и как получить безопасную локальную копию. А также как удалять старые резервные копии. (Если по какой-то несчастью DO удалит ваш экземпляр и вашу учётную запись, ваши данные должны пережить это.)

:woman_facepalming:t3: Мы тоже используем функционал резервного копирования Discourse, и я понял, что мы не очищали старые резервные копии там.

Ну, я удалил все, кроме самой последней резервной копии, используя интерфейс Discourse, а также загрузил самую новую резервную копию на свой локальный диск. Это привело меня к тому, что осталось менее 100 МБ до того, чтобы иметь достаточно места.

Вот что я получаю при запуске этой команды в var/discourse

656876  /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse/vendor
819624  /var/log/journal/e734ad1931dbee4740881cc15c9e7a9a
826292  /var/discourse/shared/standalone
826296  /var/discourse/shared
831476  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn/v6
831484  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn
831492  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache
832188  /var/discourse
845992  /lib/modules
850136  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse
850144  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home
898764  /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr/lib
966656  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www/discourse
966660  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www
966664  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var
991800  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff
991816  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765
994980  /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr/lib
1089092 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www/discourse
1089096 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www
1130168 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var
1177644 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff
1177660 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49
1224436 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
1224440 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www
1224444 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var
1234612 /lib
1248080 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff
1248096 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d
1342320 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr
1516440 /usr
1543656 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www/discourse
1543664 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www
1558580 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var
1659548 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff
1659564 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91
2040472 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr
2171304 /var/log/journal/d893af269dfb5f73239a5b6761d49ea0
2388612 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff
2388628 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6
2461904 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff
2461924 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058
3064672 /var/log/journal
3276268 /var/log
10107180        /var/lib/docker/overlay2
10131984        /var/lib/docker
10396840        /var/lib
14869684        /var
20007992        /

Я получил дополнительные инструкции о том, как поступить со следующим:

Детали:

rofranoJohn Rofrano

1

20ч

Команда для удаления образа:

docker rmi {image_name}

Где {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 использует некоторые слои из него. Что вам нужно сделать:

docker rmi my-new-image:latest
docker rmi b1ee72ab84ae
docker build -t 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 ГБ), но вы решили мою самую срочную проблему — создание достаточного места для обновления! Спасибо!!

Абсолютно верно! Пока мне очень интересно изучать новое, так что время того стоит.