Sodelavec je reagiral, da se sistem ne more prijaviti v testno okolje, odločno preveril nadzor in ugotovil, da je servisni port odprt, ter se prijavil na strežnik, da preveri uporabo trdega diska, in ugotovil, da je mapa, priključena na določen disk, polna, kot je prikazano na spodnji sliki:
Disk je 100 % disk, ki ga uporablja docker aplikacija, in sprva se sumi, da nezmožnost zapisovanja log datotek preprečuje modulu zagotavljanje storitev zunanjemu svetu.
Išči velike datoteke in jih na koncu poišči v podmapi /var/lib/docker/containers/Določena json.log datoteka zavzema 30G。
Čiščenje tekočih dnevnikov kontejnerjev (zdravljenje simptomov)
Da bi posoda lahko takoj normalno postregla. Začasna rešitev, hitro čiščenje takih datotek, sprostitev prostora na trdem disku, skripta je naslednja:
Če docker kontejner teče, potem po brisanju dnevnikov z rm -rf ugotovite, da prostor na disku ni sproščen preko df -h. Razlog je v tem, da na Linux ali Unix sistemih brisanje datoteke preko rm -rf ali upravitelja datotek odklopi datoteko od strukture imenikov datotečnega sistema. Če je datoteka odprta (in se uporablja proces), bo proces še vedno lahko bral datoteko in prostor na disku bo ves čas zaseden. Pravilna poza je cat /dev/null > *-json.log, seveda pa lahko tudi ponovno zaženeš docker po odstranitvi preko rm -rf.
Pripombo:Ustvarite nov skript v mapi prostega diska, sicer skripte ni mogoče normalno ustvariti。
Nastavitev velikosti dnevnika docker kontejnerja (osnovni vzrok)
Nastavite največjo velikost loga storitve kontejnerja in dodajte parameter za nastavitev velikosti loga vsebnika ob zagonu vsebnika, na primer:
max-size=500m, kar pomeni, da je zgornja meja velikosti dnevnika kontejnerja 500M, max-file=3, kar pomeni, da ima vsebnik tri loge, in sicer id+.json, id+1.json in id+2.json.
Docker se je preselil na nov disk
Podatki, povezani z dockerjem, obstajajo na sistemskem disku, sistemski disk je velik le 50G, podatkovni disk pa 100G, kako prenesti obstoječe podatke Dockerja na podatkovni disk?
Za docker, nameščen z metodo yum sistema CentOS, naj bo privzeta namestitvena mapa: /var/lib/docker
Docker različica < v17.05.0
Ker lahko dockerd določi pot shranjevanja slike in kontejnerja preko grafa parametrov, kot je –graph=/var/lib/docker, moramo le spremeniti konfiguracijsko datoteko, da določimo začetne parametre.
Dockerjeva konfiguracijska datoteka lahko nastavi večino parametrov procesa v ozadju, lokacija shranjevanja v vsakem operacijskem sistemu pa je nedosledna, v Ubuntu: /etc/default/docker in v CentOS: /etc/sysconfig/docker.
Docker različica >= v17.05.0
Ker je Docker uradno ukinil funkcijo grafov v tej izdaji, če imate na svojem računalniku nameščeno različico Dockerja >= v17.05.0, ne morete spreminjati privzete namestitvene (shranjevalne) mape Dockerja z določitvijo parametra grafa v konfiguracijski datoteki /etc/default/docker.
Obstajajo tudi drugi načini, kako lahko nova različica Dockerja doseže naš cilj spreminjanja namestitvenega (shranjevalnega) imenika: s spreminjanjem (novega) /etc/docker/daemon.json za določitev vrednosti parametra korena podatkov.
Docker daemon directory configuration:Prijava do hiperpovezave je vidna.
Priprava na migracijo: Ustavite vse aplikacije kontejnerjev in ustavite docker storitve (systemcTL, zaustavite docker).
Ustvarite novo mapo v /home/software z naslednjim ukazom:
Migrirajte mapo /var/lib/docker v mapo /home/software/docker (priporočljivo je, da jo kopirate, nato pa izbrišete datoteko /var/lib/docker, ko je v redu), ukaz je naslednji:
Pri kopiranjuObvezno dodajte parameter -a, sicer nekateri kontejnerji ne bodo delovali pravilno!!!!!
Oglejte si vse mehke povezave in datotečne točke v trenutni mapi z naslednjim ukazom:
Spremenite datoteko /etc/docker/daemon.json z naslednjim ukazom:
Shrani in nato zaženi docker storitev z naslednjim ukazom:
Zaženi kontejner, vsi testi potekajo normalno in končno,Izbriši mapo /var/lib/docker。
(Konec)
|