Подтвердить что ты не робот

Безопасно ли чистить докеры/наложения2/

У меня есть некоторые контейнеры докеров, работающие на AWS EC2, папка /var/lib/docker/overlay2 растет очень быстро в размере диска.

Мне интересно, можно ли удалить его содержимое? или если у докера есть какая-то команда, чтобы освободить использование диска.

Спасибо!


ОБНОВИТЬ:

Я на самом деле попробовал docker system prune -a, которая исправила 0Kb.

Также размер диска my/docker/overlay2 намного больше, чем выход из docker system df

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

4b9b3361

Ответ 1

Docker использует /var/lib/docker для хранения ваших изображений, контейнеров и локальных томов. Удаление этого может привести к потере данных и, возможно, к остановке работы двигателя. Подкаталог overlay2 специально содержит различные уровни файловой системы для изображений и контейнеров.

Чтобы очистить неиспользуемые контейнеры и изображения, см. docker system prune. Существуют также варианты удаления томов и даже помеченных изображений, но они по умолчанию не включены из-за возможности потери данных.

Ответ 2

У меня была эта проблема... Это был журнал, который был огромен. Логи здесь:

/var/lib/docker/containers/<container id>/<container id>-json.log

Вы можете управлять этим в командной строке run или в файле compose. Смотрите там: Настройка драйверов журналирования

Я лично добавил эти 3 строки в мой файл docker-compose.yml:

my_container:
  logging:
    options:
      max-size: 10m

Ответ 3

также были проблемы с быстро растущим overlay2

/var/lib/docker/overlay2 - это папка, в которой docker хранит записываемые слои для вашего контейнера. docker system prune -a - может работать, только если контейнер остановлен и удален.

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

эта папка содержит другие папки с хеш-именами. каждая из них имеет несколько папок, включая папку diff.

папка diff - содержит фактическую разницу, записанную контейнером с точной структурой папки в качестве вашего контейнера (по крайней мере, в моем случае - Ubuntu 18...)

поэтому я использовал du -hsc/var/lib/docker/overlay2/LONGHASHHHHHHH/diff/tmp чтобы выяснить, что /tmp внутри моего контейнера является папкой, которая загрязняется.

поэтому в качестве обходного пути я использовал параметр -v/tmp/container-data/tmp: /tmp для команды docker run чтобы сопоставить внутреннюю папку /tmp с хостом и настроить cron на хосте для очистки этой папки.

Задача cron была простой:

  • sudo nano/etc/crontab
  • */30 * * * * root rm -rf/tmp/container-data/tmp/*
  • save and exit

ПРИМЕЧАНИЕ: overlay2 - это папка системного докера, и они могут изменить ее структуру в любое время. Все выше основано на том, что я там увидел. Пришлось входить в структуру папок докера только потому, что в системе не хватало места и даже не позволял мне зайти в контейнер докера.

Ответ 4

Я нашел это работает лучше всего для меня:

docker image prune --all

По умолчанию Docker не удаляет именованные изображения, даже если они не используются. Эта команда удалит неиспользуемые изображения.

Обратите внимание, что каждый слой в изображении является папкой в папке /usr/lib/docker/overlay2/.

Ответ 5

Я использовал "docker system prune -a", он очищал все файлы под томами и overlay2

    [[email protected] volumes]# docker system prune -a
    WARNING! This will remove:
            - all stopped containers
            - all networks not used by at least one container
            - all images without at least one container associated to them
            - all build cache
    Are you sure you want to continue? [y/N] y
    Deleted Images:
    untagged: ubuntu:12.04
    untagged: [email protected]:18305429afa14ea462f810146ba44d4363ae76e4c8dfc38288cf73aa07485005
    deleted: sha256:5b117edd0b767986092e9f721ba2364951b0a271f53f1f41aff9dd1861c2d4fe
    deleted: sha256:8c7f3d7534c80107e3a4155989c3be30b431624c61973d142822b12b0001ece8
    deleted: sha256:969d5a4e73ab4e4b89222136eeef2b09e711653b38266ef99d4e7a1f6ea984f4
    deleted: sha256:871522beabc173098da87018264cf3e63481628c5080bd728b90f268793d9840
    deleted: sha256:f13e8e542cae571644e2f4af25668fadfe094c0854176a725ebf4fdec7dae981
    deleted: sha256:58bcc73dcf4050a4955916a0dcb7e5f9c331bf547d31e22052f1b5fa16cf63f8
    untagged: osixia/openldap:1.2.1
    untagged: osixia/[email protected]:6ceb347feb37d421fcabd80f73e3dc6578022d59220cab717172ea69c38582ec
    deleted: sha256:a562f6fd60c7ef2adbea30d6271af8058c859804b2f36c270055344739c06d64
    deleted: sha256:90efa8a88d923fb1723bea8f1082d4741b588f7fbcf3359f38e8583efa53827d
    deleted: sha256:8d77930b93c88d2cdfdab0880f3f0b6b8be191c23b04c61fa1a6960cbeef3fe6
    deleted: sha256:dd9f76264bf3efd36f11c6231a0e1801c80d6b4ca698cd6fa2ff66dbd44c3683
    deleted: sha256:00efc4fb5e8a8e3ce0cb0047e4c697646c88b68388221a6bd7aa697529267554
    deleted: sha256:e64e6259fd63679a3b9ac25728f250c3afe49dbe457a1a80550b7f1ccf68458a
    deleted: sha256:da7d34d626d2758a01afe816a9434e85dffbafbd96eb04b62ec69029dae9665d
    deleted: sha256:b132dace06fa7e22346de5ca1ae0c2bf9acfb49fe9dbec4290a127b80380fe5a
    deleted: sha256:d626a8ad97a1f9c1f2c4db3814751ada64f60aed927764a3f994fcd88363b659
    untagged: centos:centos7
    untagged: [email protected]:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
    deleted: sha256:ff426288ea903fcf8d91aca97460c613348f7a27195606b45f19ae91776ca23d
    deleted: sha256:e15afa4858b655f8a5da4c4a41e05b908229f6fab8543434db79207478511ff7

    Total reclaimed space: 533.3MB
    [[email protected] volumes]# ls -alth
    total 32K
    -rw-------  1 root root  32K May 23 21:14 metadata.db
    drwx------  2 root root 4.0K May 23 21:14 .
    drwx--x--x 14 root root 4.0K May 21 20:26 ..

Ответ 6

ПРЕДУПРЕЖДЕНИЕ: НЕ ИСПОЛЬЗУЙТЕ В СИСТЕМЕ ПРОИЗВОДСТВА

/# df
...
/dev/xvda1      51467016 39384516   9886300  80% /
...

Хорошо, сначала попробуйте обрезать систему

#/ docker system prune --volumes
...
/# df
...
/dev/xvda1      51467016 38613596  10657220  79% /
...

Не так здорово, похоже, что он очистил несколько мегабайт. Теперь сходите с ума:

/# sudo su
/# service docker stop
/# cd /var/lib/docker
/var/lib/docker# rm -rf *
/# service docker start
/var/lib/docker# df
...
/dev/xvda1      51467016 8086924  41183892  17% /
...

Ницца! Просто помните, что это НЕ рекомендуется ни в чем, кроме отбрасывающего сервера. На этом этапе внутренняя база данных Docker не сможет найти ни одного из этих оверлеев, и это может привести к непредвиденным последствиям.