Dockeri salvestusruumi migratsiooniprobleemi ajalugu (doki juur)

Mitte rohkem kui paar päeva tagasi otsustati ühes serveris teisaldada dockeri salvestusruum (kataloog, kuhu docker salvestab kõik konteineri- ja pildifailid) eraldi sektsiooni, mis
oli suurem võimsus. Ülesanne tundus tühine ega ennustanud probleeme...

Alustamine:

1. Peatage ja hävitage kõik meie rakenduse konteinerid:

docker-compose down

kui konteinereid on palju ja need on erineva koostisega, saate seda teha:

docker rm -f $(docker ps -q)

2. Peatage dockeri deemon:

systemctl stop docker

3. Liigutage kataloog soovitud asukohta:

cp -r /var/lib/docker /docker/data/storage

4. Käsime dokkedeemonil uude kataloogi vaadata. Valikuid on mitu: kasutage kas lippu -g, et suunata deemon uuele teele, või systemd konfiguratsioonid, mida me kasutasime. Või sümbollink. Ma ei lasku sellesse liiga üksikasjalikult, see on Internetis. täis juhendid dokkijuure uude asukohta teisaldamiseks.

5. Käivitage dokkedeemon ja veenduge, et see oleks õiges kohas.

systemctl status docker

Ühel väljundreal peaksime nägema:

├─19493 /usr/bin/dockerd --data-root=/docker/data/storage

Veenduge inkvizitor68sl)!

docker info | awk '/Root Dir/ {print $NF}' 

6. Alustame oma rakendust:

docker-compose up -d

7. Kontrollimine

Ja siit see lõbu algab, DBMS, MQ, kõik on korras! Andmebaas on terve, kõik töötab... välja arvatud nginx. Meil on oma nginxi konstruktsioon Kerberose ja kurtisaanidega. Ja konteineri logide vaatamine näitas, et see ei saa kirjutada /var/tmp - Luba keelatud. Mutkun näppudega oimukohti ja üritan olukorda analüüsida... Kuidas see võimalik on? Dockeri pilt ei muutunud. Me just teisaldasime kataloogi. See töötas alati ja siin see on teie jaoks... Eksperimendi huvides läksin kätega konteinerisse ja muutsin selle kataloogi õigusi, seal olid juur, juur 755, andis juur, juur 777. Ja kõik algas... Peas hakkas kõlama mõte - mingi jama... Ma mõtlesin, et noh, võib-olla ma ei võtnud midagi arvesse...

Otsustasin, et edastuse ajal armusime failide juurdepääsuõigustesse. Peatasime rakenduse, dokkedeemoni, kustutasime uue kataloogi ja kopeerisime kataloogi /var/lib/docker kasutades rsync -a.

Ma arvan, et nüüd on kõik korras, tõstame Dockeri rakenduse üles.

Aaand... probleem jäi... Silm tõmbles. Tormasin oma virtuaalmasina konsooli, kus teen erinevaid teste, mul oli see nginxi pilt ja ma ronisin konteinerisse ja siin on /var/tmp kataloogi õigused juur, juur 777. See tähendab, et sama nagu pidin käsitsi seadistama. Aga pildid on identsed!

xfs failisüsteemi kasutati kõikjal.

Võrdlesin käsu abil

docker inspect my-nginx:12345

Kõik räsid on identsed, kõik üks ühele. Nii serveris kui ka minu virtuaalmasinas. Kustutasin kohaliku nginxi pildi ja tõmbasin selle uuesti registrist, mis mitmel põhjusel asub samas masinas. Ja probleem on sama... Nüüd tõmbleb mu teine ​​silm.

Ma ei mäleta enam, mis mõtted peas keerlesid, peale “AAAAAAAAA” karjumise ja muu. Kell oli 4 hommikul ja pildikihtide räsimise põhimõttest aru saamiseks kasutati Dockeri lähtekoodi. Avas kolmanda energiajoogipurgi. Ja lõpuks jõudis mulle kohale, et räsimisel võetakse arvesse ainult faili, selle sisu, aga EI OLE JUURDEPÄÄSUÕIGUSED! See tähendab, et mingil müstilisel viisil on meie õigused kadunud, selinux on keelatud, acl-i ei kasutata ja kleepuvat bitti pole.

Kustutasin kohaliku pildi, kustutasin pildi ka dockeri registrist ja lükkasin uuesti. Ja kõik töötas. Selgub, et üleandmise käigus läksid õigused kaduma nii kohaliku pildi sees kui ka registris lebava pildi sees. Nagu ma juba ütlesin, asus see mitmel põhjusel samal autol. Ja selle tulemusena ühes kataloogis /var/lib/docker.

Ja oodates küsimust, kas nad üritasid dokkija pilku vanasse kataloogi tagasi tuua - ei, nad ei proovinud, paraku asjaolud seda ei võimaldanud. Jah, ja ma tõesti tahtsin sellest aru saada.

Pärast selle artikli kirjutamist näib probleemi lahendus mulle iseenesestmõistetav, kuid analüüsi ajal see nii ei tundunud. Ausalt, ma googeldasin ja ei leidnud sarnaseid olukordi.

Tulemus: lahendasin probleemi, ma ei saa ikka veel põhjust aru =(

Kui keegi teab, arvab, omab nägemust selle probleemi võimalikest põhjustest, on mul väga hea meel kuulda teid kommentaarides!

Allikas: www.habr.com

Lisa kommentaar