De collega reageerde dat het systeem niet kon inloggen op de testomgeving, controleerde de monitoring doortastend en ontdekte dat de servicepoort open was, logde in op de server om het gebruik van de harde schijf te controleren en ontdekte dat de map die op een bepaalde schijf was gemonteerd vol was, zoals weergegeven in de onderstaande figuur:
De schijf is voor 100% de schijf die door de docker-applicatie wordt gebruikt, en aanvankelijk wordt vermoed dat het onvermogen om logbestanden te schrijven voorkomt dat de module diensten aan de buitenwereld kan leveren.
Zoek naar grote bestanden en vind ze tenslotte onder de submap /var/lib/docker/containers/Een bepaald json.log bestand neemt 30G in beslag。
Reinigen van lopende containerlogs (Symptoombehandeling)
Om de container direct normaal te laten serveren. Tijdelijke oplossing: snel zulke bestanden opschonen, harde schijfruimte vrijmaken, het script is als volgt:
Als de docker-container draait, zul je na het verwijderen van de logs met rm -rf merken dat schijfruimte niet vrijkomt via df -h. De reden is dat op Linux- of Unix-systemen het verwijderen van een bestand via rm -rf of een bestandsbeheerder het loskoppelt van de mapstructuur van het bestandssysteem. Als het bestand wordt geopend (en er is een proces in gebruik), kan het proces het bestand nog steeds lezen en wordt de schijfruimte voortdurend ingenomen. De juiste houding is cat /dev/null > *-json.log, en natuurlijk kun je docker ook opnieuw opstarten nadat je het hebt verwijderd via rm -rf.
Opmerking:Maak een nieuw script aan in de map van de vrije schijf, anders kan het script niet normaal worden aangemaakt。
Het instellen van de loggrootte van de Docker-container (Oorzaak)
Stel de maximale loggrootte van een containerservice in en voeg een parameter toe om de loggrootte van de container bij het starten van de container in te stellen, bijvoorbeeld:
max-size=500m, wat betekent dat de bovengrens van de loggrootte van een container 500M is, max-file=3, wat betekent dat een container drie logs heeft, namelijk id+.json, id+1.json en id+2.json.
Docker is gemigreerd naar een nieuwe schijf
Docker-gerelateerde data staat op de systeemschijf, de systeemschijf is slechts 50G groot en de datadisk is 100G groot, hoe verplaats je de bestaande docker-data naar de datadisk?
Voor docker geïnstalleerd met de CentOS-systeem yum-methode, zou de standaard installatiemap moeten zijn: /var/lib/docker
Docker-versie < v17.05.0
Omdat dockerd het image en containeropslagpad kan specificeren via de parametergrafiek, zoals –graph=/var/lib/docker, hoeven we alleen het configuratiebestand aan te passen om de opstartparameters te specificeren.
Het configuratiebestand van Docker kan de meeste achtergrondprocesparameters instellen, en de opslaglocatie in elk besturingssysteem is inconsistent, in Ubuntu: /etc/default/docker, en in CentOS: /etc/sysconfig/docker.
Docker-versie >= v17.05.0
Omdat Docker de graph-functie officieel heeft afgeschaft in deze release, kun je als je Docker-versie >= v17.05.0 op je machine hebt geïnstalleerd, de standaard installatie- (opslag-)map van Docker niet wijzigen door de graphparameter in het /etc/default/docker-configuratiebestand te specificeren.
Er zijn andere manieren waarop de nieuwe versie van Docker ons doel kan bereiken om de installatiemap (opslag) te wijzigen: door (nieuwe) /etc/docker/daemon.json te wijzigen om de waarde van de data-rootparameter te specificeren.
Docker daemon-directoryconfiguratie:De hyperlink-login is zichtbaar.
Migratievoorbereiding: Stop alle containerapplicaties en stop docker-diensten (systemctl stop docker).
Maak een nieuwe map aan in /home/software met het volgende commando:
Migreer de map /var/lib/docker naar de map /home/software/docker (het wordt aanbevolen deze te kopiëren en vervolgens het bestand /var/lib/docker te verwijderen zodra het goed is), het commando is als volgt:
Bij het kopiërenZorg ervoor dat je de -a-parameter toevoegt, anders werken sommige containers niet goed!!!!!
Bekijk alle zachte verbindingen en bestandspunten in de huidige map met het volgende commando:
Wijzig het bestand /etc/docker/daemon.json met het volgende commando:
Sla op, start vervolgens de docker-service met het volgende commando:
Start de container, de tests draaien allemaal normaal, en tot slot,Verwijder de map /var/lib/docker。
(Einde)
|