Kolega sureagavo, kad sistema negalėjo prisijungti prie bandomosios aplinkos, ryžtingai patikrino stebėjimą ir nustatė, kad paslaugų prievadas yra atidarytas, ir prisijungė prie serverio, kad patikrintų standžiojo disko naudojimą ir nustatė, kad tam tikrame diske sumontuotas katalogas buvo pilnas, kaip parodyta paveikslėlyje žemiau:
Diskas yra 100% diskas, kurį naudoja "docker" programa, ir iš pradžių įtariama, kad nesugebėjimas rašyti žurnalo failų neleidžia moduliui teikti paslaugų išoriniam pasauliui.
Ieškokite didelių failų ir galiausiai suraskite juos pakatalogyje /var/lib/docker/containers/Tam tikras json.log failas užima 30G。
Veikiančių konteinerių žurnalų valymas (simptomų gydymas)
Kad indas iš karto galėtų normaliai tarnauti. Laikinas sprendimas, greitai išvalykite tokius failus, atlaisvinkite vietos standžiajame diske, scenarijus yra toks:
Jei docker konteineris veikia, tada ištrynę žurnalus naudodami rm -rf, pamatysite, kad disko vieta nėra atlaisvinta per df -h. Priežastis ta, kad Linux ar Unix sistemose ištrynus failą per rm -rf arba failų tvarkyklę, jis bus atsietas nuo failų sistemos katalogų struktūros. Jei failas atidaromas (ir yra naudojamas procesas), procesas vis tiek galės nuskaityti failą ir disko vieta bus užimta visą laiką. Teisinga poza yra cat /dev/null > *-json.log, ir, žinoma, taip pat galite iš naujo paleisti docker pašalinę jį per rm -rf.
Pastaba:Sukurkite naują scenarijų laisvo disko kataloge, kitaip scenarijaus negalima sukurti normaliai。
"Docker" konteinerio žurnalo dydžio nustatymas (pagrindinė priežastis)
Nustatykite maksimalų konteinerio paslaugos žurnalo dydį ir įtraukite parametrą, kad nustatytumėte konteinerio žurnalo dydį paleidžiant konteinerį, pvz.:
max-size=500m, o tai reiškia, kad viršutinė konteinerio rąsto dydžio riba yra 500M, max-file=3, o tai reiškia, kad konteineryje yra trys žurnalai: id+.json, id+1.json ir id+2.json.
"Docker" perkeltas į naują diską
Sistemos diske yra su "Docker" susiję duomenys, sistemos diskas yra tik 50G dydžio, o duomenų diskas yra 100G dydžio, kaip perkelti esamus "Docker" duomenis į duomenų diską?
"Docker", įdiegtam naudojant "CentOS" sistemos yum metodą, numatytasis diegimo katalogas turėtų būti: /var/lib/docker
"Docker" versija < v17.05.0
Kadangi dockerd gali nurodyti vaizdo ir konteinerio saugojimo kelią per parametrų grafiką, pvz., –graph=/var/lib/docker, mums tereikia modifikuoti konfigūracijos failą, kad nurodytume paleisties parametrus.
"Docker" konfigūracijos failas gali nustatyti daugumą foninio proceso parametrų, o saugojimo vieta kiekvienoje operacinėje sistemoje yra nenuosekli, Ubuntu: /etc/default/docker, o CentOS: /etc/sysconfig/docker.
"Docker" versija >= v17.05.0
Kadangi "Docker" oficialiai nebenaudojo grafiko funkcijos šiame leidime, jei jūsų kompiuteryje įdiegta "Docker" versija >= v17.05.0, negalite modifikuoti numatytojo "Docker" diegimo (saugyklos) katalogo, nurodydami grafiko parametrą /etc/default/docker konfigūracijos faile.
Yra ir kitų būdų, kaip naujoji "Docker" versija gali pasiekti mūsų tikslą modifikuoti diegimo (saugojimo) katalogą: modifikuojant (naują) /etc/docker/daemon.json, kad būtų nurodyta duomenų šaknies parametro reikšmė.
"Docker" demono katalogo konfigūracija:Hipersaito prisijungimas matomas.
Migracijos paruošimas: sustabdykite visas konteinerių programas ir sustabdykite docker paslaugas (systemctl stop docker).
Sukurkite naują katalogą /home/software naudodami šią komandą:
Perkelkite /var/lib/docker katalogą į /home/software/docker katalogą (rekomenduojama jį nukopijuoti, o tada ištrinti /var/lib/docker katalogo failą, kai viskas gerai), komanda yra tokia:
KopijuojantBūtinai pridėkite parametrą -a, kitaip kai kurie konteineriai neveiks tinkamai!!!!!
Peržiūrėkite visus minkštus ryšius ir failų taškus dabartiniame kataloge naudodami šią komandą:
Pakeiskite failą /etc/docker/daemon.json naudodami šią komandą:
Išsaugokite, tada paleiskite "Docker" paslaugą naudodami šią komandą:
Paleiskite konteinerį, visi testai veikia normaliai ir galiausiaiIštrinkite aplanką /var/lib/docker。
(Pabaiga)
|