Kolega zareagował, że system nie może zalogować się do środowiska testowego, zdecydowanie sprawdził monitoring, stwierdził, że port serwisowy jest otwarty, zalogował się na serwer, aby sprawdzić użycie dysku twardego i stwierdził, że katalog zamontowany na danym dysku jest pełny, jak pokazano na poniższym rysunku:
Dysk jest w 100% tym samym dyskiem używanym przez aplikację docker i początkowo podejrzewa się, że niemożność zapisywania plików logów uniemożliwia modułowi świadczenie usług dla świata zewnętrznego.
Szukaj dużych plików i w końcu znajdź je w podkatalogu /var/lib/docker/containers/Pewien plik json.log zajmuje 30G。
Czyszczenie rejestrów pojemników (leczenie objawów)
Aby pojemnik mógł od razu normalnie podać. Tymczasowe rozwiązanie: szybkie oczyszczenie takich plików, zwolnienie miejsca na dysku twardym, skrypt wygląda następująco:
Jeśli kontener docker działa, to po usunięciu logów za pomocą rm -rf zauważysz, że miejsce na dysku nie jest zwalniane przez df -h. Powodem jest to, że na systemach Linux lub Unix usunięcie pliku przez rm -rf lub menedżera plików odłącza go od struktury katalogów systemu plików. Jeśli plik zostanie otwarty (a proces jest używany), proces nadal będzie mógł go odczytać, a miejsce na dysku będzie cały czas zajmowane. Poprawna pozycja to cat /dev/null > *-json.log, a oczywiście możesz też zrestartować dockera po jego usunięciu przez rm -rf.
Uwaga:Utwórz nowy skrypt w katalogu wolnego dysku, w przeciwnym razie skrypt nie może być utworzony normalnie。
Ustawianie rozmiaru logu kontenera docker (przyczyna źródłowa)
Ustaw maksymalny rozmiar logu usługi kontenera i dodaj parametr ustawiający rozmiar logu kontenera podczas uruchamiania kontenera, na przykład:
maksymalny rozmiar=500 m, co oznacza, że górna granica rozmiaru kłodu kontenera wynosi 500 m, max-file=3, co oznacza, że kontener ma trzy logi, mianowicie id+.json, id+1.json i id+2.json.
Docker przeniósł się na nowy dysk
Dane związane z dockerem istnieją na dysku systemowym, dysku systemowego ma tylko 50G, a dysk 100G, jak przenieść istniejące dane z Dockera na dysk danych?
Dla dockerów zainstalowanych metodą systemową yum w CentOS, domyślny katalog instalacyjny powinien wyglądać: /var/lib/docker
Wersja Docker< v17.05.0
Ponieważ dockerd może określić ścieżkę pamięci obrazu i kontenera przez graf parametrów, takie jak –graph=/var/lib/docker, wystarczy zmodyfikować plik konfiguracyjny, aby określić parametry startowe.
Plik konfiguracyjny Dockera może ustawić większość parametrów procesów w tle, a miejsce przechowywania w każdym systemie operacyjnym jest niespójne, w Ubuntu: /etc/default/docker, a w CentOS: /etc/sysconfig/docker.
Wersja Dockera >= v17.05.0
Ponieważ Docker oficjalnie wycofał funkcję grafu w tej wersji, jeśli masz zainstalowaną wersję Dockera >= v17.05.0 na swoim komputerze, nie możesz modyfikować domyślnego katalogu instalacyjnego (storage) Dockera poprzez określenie parametru grafu w pliku konfiguracyjnym /etc/default/docker.
Istnieją inne sposoby, w jakie nowa wersja Dockera może osiągnąć nasz cel modyfikacji katalogu instalacyjnego (storage): poprzez modyfikację (nowego) /etc/docker/daemon.json w celu określenia wartości parametru korzenia danych.
Docker daemon directory configuration:Logowanie do linku jest widoczne.
Przygotowanie do migracji: Zatrzymać wszystkie aplikacje kontenerowe i zatrzymać usługi docker (systemctl stop docker).
Utwórz nowy katalog w /home/software za pomocą następującego polecenia:
Migracja katalogu /var/lib/docker do katalogu /home/software/docker (zaleca się go skopiować, a następnie usunąć plik katalogu /var/lib/docker, gdy to będzie możliwe), polecenie wygląda następująco:
Podczas kopiowaniaUpewnij się, że dodasz parametr -a, bo inaczej niektóre kontenery nie będą działać poprawnie!!!!!
Zobacz wszystkie miękkie połączenia i punkty plików w aktualnym katalogu za pomocą następującego polecenia:
Zmodyfikuj plik /etc/docker/daemon.json za pomocą następującego polecenia:
Zapisz, a następnie rozpocznij usługę docker następującym poleceniem:
Uruchom kontener, testy działają normalnie, i na koniec,Usuń folder /var/lib/docker。
(Koniec)
|