Колега відреагував, що система не може увійти в тестове середовище, рішуче перевірив моніторинг і виявив, що сервісний порт відкритий, увійшов на сервер для перевірки використання жорсткого диска і виявив, що каталог, змонтований на певному диску, був заповнений, як показано на рисунку нижче:
Диск на 100% відповідає тому, що використовується докер-додатком, і спочатку підозрюють, що неможливість записувати файли журналів заважає модулю надавати послуги зовнішньому світу.
Шукайте великі файли і нарешті знаходьте їх у підпапці /var/lib/docker/containers/Певний файл 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。
(Кінець)
|