Kollegan reagerade på att systemet inte kunde logga in i testmiljön, kontrollerade övervakningen beslutsamt och upptäckte att serviceporten var öppen, och loggade in på servern för att kontrollera hårddiskanvändningen och fann att katalogen monterad på en viss disk var full, som visas i figuren nedan:
Disken är 100 % den disk som används av dockerapplikationen, och det misstänks initialt att oförmågan att skriva loggfiler hindrar modulen från att tillhandahålla tjänster till omvärlden.
Sök efter stora filer och hitta dem slutligen under undermappen /var/lib/docker/containers/En viss json.log fil tar upp 30 GB。
Rengöring av löpande containerstockar (symtombehandling)
För att låta behållaren serveras normalt omedelbart. Tillfällig lösning, rensa snabbt upp sådana filer, frigör hårddiskutrymme, skriptet är följande:
Om docker-containern körs, efter att loggarna raderats med rm -rf, kommer du att upptäcka att diskutrymme inte frigörs via df -h. Anledningen är att på Linux- eller Unix-system kommer en filhantering att ta bort en fil via rm -rf eller en filhanterare att koppla bort den från filsystemets katalogstruktur. Om filen öppnas (och det finns en process i bruk) kommer processen fortfarande att kunna läsa filen och diskutrymmet kommer att tas upp hela tiden. Den korrekta positionen är cat /dev/null > *-json.log, och självklart kan du också starta om docker efter att ha tagit bort det via rm -rf.
Anmärkning:Skapa ett nytt skript i katalogen på den fria disken, annars kan skriptet inte skapas normalt。
Att ställa in loggstorleken på Docker-containern (rotorsak)
Sätt den maximala logstorleken för en containertjänst och lägg till en parameter för att ange logstorleken på containern när containern startas, till exempel:
max-size=500m, vilket betyder att den övre gränsen för stockstorleken för en container är 500M, max-file=3, vilket innebär att en container har tre loggar, nämligen id+.json, id+1.json och id+2.json.
Docker migrerade till en ny disk
docker-relaterad data finns på systemdisken, systemdisken är bara 50G stor och datadisken är 100G, hur flyttar man den befintliga datan från docker till datadisken?
För docker installerad med CentOS-systemet yum-metoden ska standardinstallationskatalogen vara: /var/lib/docker
Docker-versionen < v17.05.0
Eftersom dockerd kan specificera bild- och containerlagringsvägen via parametergrafen, såsom –graph=/var/lib/docker, behöver vi bara ändra konfigurationsfilen för att ange startparametrarna.
Dockers konfigurationsfil kan ställa in de flesta bakgrundsprocessparametrar, och lagringsplatsen i varje operativsystem är inkonsekvent, i Ubuntu: /etc/default/docker, och i CentOS: /etc/sysconfig/docker.
Docker-version >= v17.05.0
Eftersom Docker officiellt avskaffade graffunktionen i denna version, om du har Docker version >= v17.05.0 installerad på din dator, kan du inte ändra standardinstallations- (lagrings-) mappen för Docker genom att ange grafparametern i konfigurationsfilen /etc/default/docker.
Det finns andra sätt på vilka den nya versionen av Docker kan uppnå vårt mål att modifiera installations- (lagrings-) katalogen: genom att modifiera (nya) /etc/docker/daemon.json för att specificera värdet på data-root-parametern.
Docker daemon-katalogkonfiguration:Inloggningen med hyperlänken är synlig.
Migreringsförberedelse: Stoppa alla containerapplikationer och stoppa docker-tjänster (systemctl stop docker).
Skapa en ny katalog i /home/software med följande kommando:
Migrera katalogen /var/lib/docker till katalogen /home/software/docker (det rekommenderas att kopiera den och sedan ta bort katalogfilen /var/lib/docker när den är okej), kommandot är följande:
Vid kopieringSe till att lägga till -a-parametern, annars fungerar vissa behållare inte som de ska!!!!!
Visa alla mjuka anslutningar och filpunkter i den aktuella katalogen med följande kommando:
Modifiera filen /etc/docker/daemon.json med följande kommando:
Spara och starta sedan docker-tjänsten med följande kommando:
Starta containern, testerna körs normalt, och slutligen,Ta bort mappen /var/lib/docker。
(Slut)
|