Колегата реагира, че системата не може да влезе в тестовата среда, решително провери мониторинга и установи, че сервизният порт е отворен, влезе в сървъра, за да провери използването на твърдия диск и установи, че директорията, монтирана на определен диск, е пълна, както е показано на фигурата по-долу:
Дискът е 100% дискът, използван от docker приложението, и първоначално се подозира, че невъзможността за записване на лог файлове пречи на модула да предоставя услуги на външния свят.
Потърсете големи файлове и най-накрая ги намерете под поддиректорията /var/lib/docker/container/Определен json.log файл заема 30G。
Почистване на течащи контейнерни трупове (лечение на симптомите)
За да може контейнерът да се сервира нормално веднага. Временно решение, бързо почистване на такива файлове, освобождаване на място на твърдия диск, скриптът е следният:
Ако docker контейнерът работи, след като изтриеш логовете с rm -rf, ще откриеш, че дисковото пространство не се освобождава чрез df -h. Причината е, че при Linux или Unix системи изтриването на файл чрез rm -rf или файлов мениджър ще го откачи от директорията на файловата система. Ако файлът е отворен (и има процес, който се използва), процесът все пак ще може да чете файла и дисковото пространство ще бъде заето постоянно. Правилната поза е cat /dev/null > *-json.log, и разбира се можеш да рестартираш docker след като го премахнеш чрез rm -rf.
Забележка:Създайте нов скрипт в директорията на свободния диск, в противен случай скриптът не може да бъде създаден нормално。
Задаване на размера на лога на Docker контейнера (коренна причина)
Задайте максималния размер на лога на контейнерна услуга и добавете параметър, който да задава размера на лога на контейнера при стартиране на контейнера, например:
max-size=500m, което означава, че горната граница на размера на лога на контейнер е 500M, max-file=3, което означава, че контейнерът има три лога, а именно id+.json, id+1.json и id+2.json.
Docker мигрира на нов диск
Данните, свързани с Docker, съществуват на системния диск, системният диск е само 50G, а дискът с данни е с размер 100G, как да преместя съществуващите данни на Docker към диска с данни?
За docker, инсталиран чрез метода CentOS system yum, стандартната инсталационна директория трябва да бъде: /var/lib/docker.
Docker версия < v17.05.0
Тъй като dockerd може да задава пътя за съхранение на изображение и контейнер през параметърния граф, като –graph=/var/lib/docker, трябва само да модифицираме конфигурационния файл, за да зададем параметрите за стартиране.
Конфигурационният файл на Docker може да задава повечето от параметрите на фоновия процес, а мястото за съхранение във всяка операционна система е несъвместимо – в Ubuntu: /etc/default/docker, а в CentOS: /etc/sysconfig/docker.
Docker версия >= v17.05.0
Тъй като Docker официално премахна графовата функция в това издание, ако имате инсталирана Docker версия >= v17.05.0 на машината си, не можете да променяте стандартната инсталационна (хранилища) директория на Docker, като зададете параметъра граф в конфигурационния файл /etc/default/docker.
Има и други начини, по които новата версия на Docker може да постигне целта ни да модифицираме директорията за инсталация (съхранение): чрез модифициране на (нов) /etc/docker/daemon.json за задаване на стойността на параметъра data-root.
Docker daemon directory configuration:Входът към хиперлинк е видим.
Подготовка за миграция: Спрете всички контейнерни приложения и спрете docker услугите (systemctl stop docker).
Създайте нова директория в /home/software със следната команда:
Мигрирайте директорията /var/lib/docker към директорията /home/software/docker (препоръчва се да я копирате, а след това да изтриете файла с директорията /var/lib/docker, когато е наред), командата е следната:
При копиранеНе забравяйте да добавите параметъра -a, иначе някои контейнери няма да работят правилно!!!!!
Прегледайте всички софтуерни връзки и файлови точки в текущата директория със следната команда:
Променете файла /etc/docker/daemon.json със следната команда:
Запазете, след това стартирайте docker услугата със следната команда:
Стартирам контейнера, тестовете вървят нормално и накрая,Изтрийте папката /var/lib/docker。
(Край)
|