Коллега отреагировал, что система не может войти в тестовую среду, решительно проверил мониторинг и обнаружил, что сервисный порт открыт, вошёл на сервер для проверки использования жёсткого диска и обнаружил, что каталог, смонтированный на определённом диске, заполнен, как показано на рисунке ниже:
Диск на 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 для указания значения параметра корня данных.
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。
(Конец)
|