Saga um flutningsvandamál docker geymslu (docker root)

Fyrir ekki meira en nokkrum dögum síðan var ákveðið á einum af netþjónunum að færa docker geymslu (skrána þar sem docker geymir allar gáma- og myndaskrár) í sérstakan hluta, sem
hafði meiri getu. Verkefnið virtist léttvægt og spáði ekki fyrir um vandræði...

Hafist handa:

1. Stöðvaðu og drepðu alla ílát forritsins okkar:

docker-compose down

ef það eru mörg ílát og þau eru í mismunandi samsetningu geturðu gert þetta:

docker rm -f $(docker ps -q)

2. Stöðvaðu docker púkann:

systemctl stop docker

3. Færðu möppuna á viðkomandi stað:

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

4. Við segjum docker-púknum að leita í nýju möppunni. Það eru nokkrir möguleikar: annað hvort notaðu -g fánann til að benda púkanum á nýja slóð, eða systemd configs, sem við notuðum. Eða táknmynd. Ég ætla ekki að fara mikið út í þetta, þetta er á netinu. fullur handbækur um að flytja docker rót á nýjan stað.

5. Ræstu docker púkann og vertu viss um að hann líti á réttan stað:

systemctl status docker

Í einni af úttakslínunum ættum við að sjá:

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

Við sáum til þess að valmöguleikinn væri sendur til púkans, nú skulum við athuga hvort hann hafi notað hann (takk inkvisitor68sl)!

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

6. Byrjum á umsókn okkar:

docker-compose up -d

7. Athugaðu

Og hér byrjar fjörið, DBMS, MQ, allt er í lagi! Gagnagrunnurinn er ósnortinn, allt virkar... nema nginx. Við erum með okkar eigin nginx smíði með Kerberos og kurteisi. Og að skoða gámaskrárnar gaf til kynna að það gæti ekki skrifað í /var/tmp - Leyfi hafnað. Ég hnoða musterið með fingrunum og reyni að greina ástandið... Hvernig er þetta hægt? Docker myndin breyttist ekki. Við fluttum möppuna. Það virkaði alltaf, og hér er það fyrir þig... Til tilraunar fór ég inn í gáminn með höndunum og breytti réttindum á þessari möppu, það voru rót, rót 755, gaf rót, rót 777. Og allt byrjaði... Hugsun fór að hljóma í hausnum á mér - einhvers konar vitleysa... Ég hugsaði, jæja, kannski tók ég ekkert tillit til...

Ég ákvað að við urðum ástfangin af aðgangsréttinum að skránum við flutninginn. Við stöðvuðum forritið, docker púkann, eyddum nýju möppunni og afrituðum /var/lib/docker möppuna með því að nota rsync -a.

Ég held að allt sé í lagi núna, við skulum hækka Docker forritið.

Aaand... vandamálið var enn... Augað kipptist við. Ég hljóp að stjórnborðinu á sýndarvélinni minni, þar sem ég keyri ýmsar prófanir, ég var með þessa nginx mynd, og ég klifraði inn í gáminn, og hér eru réttindin á /var/tmp möppunni root, root 777. Það er, sama og ég þurfti að stilla handvirkt. En myndirnar eru eins!

xfs skráarkerfið var notað alls staðar.

Ég bar saman með því að nota skipunina

docker inspect my-nginx:12345

Öll kjötkássa eru eins, öll einn á móti einum. Bæði á þjóninum og á sýndarvélinni minni. Ég eyddi nginx-myndinni á staðnum og dró hana aftur úr skránni, sem af ýmsum ástæðum er á sömu vél. Og vandamálið er það sama... Nú kippist annað augað.

Ég man ekki lengur hvaða hugsanir voru í hausnum á mér, fyrir utan að hrópa „AAAAAAAAAA“ og annað. Klukkan var 4 að morgni og Docker frumkóði var notaður til að skilja meginregluna um að hassa myndlög. Opnaði þriðju dósina af orkudrykk. Og á endanum rann upp fyrir mér að hashing tekur aðeins mið af skránni, innihaldi hennar, en EKKI AÐGANGSRÉTTUR! Það er, á einhvern dularfullan hátt hafa réttindi okkar glatast, selinux er óvirkt, acl er ekki notað og það er enginn sticky biti.

Ég eyddi staðbundinni mynd, eyddi líka myndinni úr docker registry og ýtti henni aftur. Og allt virkaði. Í ljós kemur að við flutninginn töpuðust réttindin, bæði inni á staðbundinni mynd og inni í myndinni sem liggur í skránni. Eins og ég sagði þegar, af ýmsum ástæðum var hann staðsettur á sama bíl. Og þar af leiðandi í einni möppu /var/lib/docker.

Og að spá fyrir um spurninguna hvort þeir reyndu að snúa augnaráði hafnarstjórans aftur í gömlu möppuna - nei, þeir reyndu ekki, því miður, aðstæður leyfðu það ekki. Já, og mig langaði virkilega að komast að því.

Eftir að hafa skrifað þessa grein virðist mér lausnin á vandanum augljós, en við greiningu virtist hún ekki vera svo. Heiðarlega, ég googlaði og fann ekki svipaðar aðstæður.

Niðurstaða: Ég leysti vandamálið, ég skil samt ekki ástæðuna =(

Ef einhver veit, giska á, hafði sýn um mögulegar orsakir þessa vandamáls, mun ég vera mjög glaður að heyra frá þér í athugasemdunum!

Heimild: www.habr.com

Bæta við athugasemd