Ne vairÄk kÄ pirms pÄris dienÄm vienÄ no serveriem tika nolemts pÄrvietot docker krÄtuvi (direktoriju, kurÄ docker glabÄ visus konteineru un attÄlu failus) uz atseviŔķu sadaļu, kas
bija lielÄka kapacitÄte. Uzdevums Ŕķita triviÄls un neparedzÄja nepatikÅ”anas...
SÄksim:
1. Apturiet un iznīciniet visus mūsu lietojumprogrammas konteinerus:
docker-compose down
ja konteineru ir daudz un tie ir dažÄdos sastÄvos, varat rÄ«koties Å”Ädi:
docker rm -f $(docker ps -q)
2. Apturiet docker dÄmonu:
systemctl stop docker
3. PÄrvietojiet direktoriju uz vajadzÄ«go vietu:
cp -r /var/lib/docker /docker/data/storage
4. MÄs sakÄm dokera dÄmonam, lai tas meklÄtu jauno direktoriju. Ir vairÄkas iespÄjas: vai nu izmantojiet karogu -g, lai norÄdÄ«tu dÄmonu uz jaunu ceļu, vai sistÄmas konfigurÄcijas, kuras mÄs izmantojÄm. Vai simboliskÄ saite. Es neiedziļinÄÅ”os Å”ajÄ jautÄjumÄ, tas ir pieejams internetÄ.
5. Palaidiet docker dÄmonu un pÄrbaudiet, vai tas izskatÄs pareizajÄ vietÄ:
systemctl status docker
VienÄ no izvades rindÄm mums vajadzÄtu redzÄt:
āā19493 /usr/bin/dockerd --data-root=/docker/data/storage
MÄs pÄrliecinÄjÄmies, ka opcija tika nodota dÄmonam, tagad pÄrbaudÄ«sim, vai tas to piemÄro (paldies
docker info | awk '/Root Dir/ {print $NF}'
6. SÄksim mÅ«su lietojumprogrammu:
docker-compose up -d
7. PÄrbaudiet
Un Å”eit sÄkas jautrÄ«ba, DBMS, MQ, viss ir kÄrtÄ«bÄ! Datu bÄze neskarta, viss strÄdÄ... izÅemot nginx. Mums ir sava nginx versija ar Kerberos un kurtizÄnÄm. Un apskatot konteinera žurnÄlus, tika norÄdÄ«ts, ka tas nevar rakstÄ«t uz /var/tmp - Atļauja liegta. Es mÄ«cu deniÅus ar pirkstiem un mÄÄ£inu analizÄt situÄciju... KÄ tas iespÄjams? Docker attÄls nemainÄ«jÄs. MÄs tikko pÄrvietojÄm direktoriju. Tas vienmÄr darbojÄs, un Å”eit tas ir jums... Eksperimenta labad es ar rokÄm iegÄju konteinerÄ un mainÄ«ju tiesÄ«bas uz Å”o direktoriju, tur bija sakne, sakne 755, deva sakne, sakne 777. Un viss sÄkÄs... ManÄ galvÄ sÄka skanÄt doma - kaut kÄdas muļķības... NodomÄju, nu, varbÅ«t es kaut ko neÅÄmu vÄrÄ...
Es nolÄmu, ka mÄs iemÄ«lÄjÄm piekļuves tiesÄ«bas failiem pÄrsÅ«tÄ«Å”anas laikÄ. MÄs apturÄjÄm lietojumprogrammu, docker dÄmonu, izdzÄsÄm jauno direktoriju un nokopÄjÄm direktoriju /var/lib/docker, izmantojot rsync -a
.
Es domÄju, ka tagad viss ir kÄrtÄ«bÄ, paaugstinÄsim Docker lietojumprogrammu.
Aaand... problÄma palika... Mana acs raustÄ«jÄs. Es steidzos uz savas virtuÄlÄs maŔīnas konsoli, kur veicu dažÄdus testus, man bija Å”is nginx attÄls un es iekÄpu konteinerÄ, un Å”eit tiesÄ«bas uz direktoriju /var/tmp ir root, root 777. Tas ir, tas pats, kas man bija jÄiestata manuÄli. Bet attÄli ir identiski!
Visur tika izmantota xfs failu sistÄma.
Es salÄ«dzinÄju, izmantojot komandu
docker inspect my-nginx:12345
Visi hash ir identiski, visi viens pret vienu. Gan serverÄ«, gan manÄ virtuÄlajÄ maŔīnÄ. Es izdzÄsu vietÄjo nginx attÄlu un vÄlreiz izvilku to no reÄ£istra, kas vairÄku iemeslu dÄļ atrodas tajÄ paÅ”Ä datorÄ. Un problÄma viena un tÄ pati... Tagad man raustÄ«jÄs otrÄ acs.
Es vairs neatceros, kÄdas domas bija manÄ galvÄ, turklÄt kliedzu āAAAAAAAAAā un citas lietas. Pulkstenis bija 4 no rÄ«ta, un tika izmantots Docker pirmkods, lai saprastu attÄla slÄÅu jaukÅ”anas principu. AtvÄra treÅ”o enerÄ£ijas dzÄriena bundžu. Un beigÄs man saprata, ka jaukÅ”anÄ tiek Åemts vÄrÄ tikai fails, tÄ saturs, bet NAV PIEKÄ»UVES TIESÄŖBAS! Tas ir, kaut kÄdÄ mistiskÄ veidÄ mÅ«su tiesÄ«bas ir zaudÄtas, selinux ir atspÄjots, acl netiek izmantots un nav lipÄ«ga bita.
Es izdzÄsu vietÄjo attÄlu, izdzÄsu attÄlu arÄ« no docker reÄ£istra un nospiedu to vÄlreiz. Un viss strÄdÄja. IzrÄdÄs, ka nodoÅ”anas laikÄ tiesÄ«bas tika zaudÄtas gan vietÄjÄ attÄla iekÅ”pusÄ, gan reÄ£istrÄ guļoÅ”Ä attÄla iekÅ”pusÄ. KÄ jau teicu, vairÄku iemeslu dÄļ tas atradÄs tajÄ paÅ”Ä automaŔīnÄ. Un rezultÄtÄ vienÄ direktorijÄ /var/lib/docker.
Un, paredzot jautÄjumu, vai viÅi mÄÄ£inÄja atgriezt dokera skatienu uz veco direktoriju - nÄ, viÅi nemÄÄ£inÄja, diemžÄl apstÄkļi to neļÄva. JÄ, un es ļoti gribÄju to izdomÄt.
PÄc Ŕī raksta rakstÄ«Å”anas problÄmas risinÄjums man Ŕķiet paÅ”saprotams, taÄu analÄ«zes brÄ«dÄ« tas tÄ neŔķita. GodÄ«gi sakot, es meklÄju Google un neatradu lÄ«dzÄ«gas situÄcijas.
RezultÄts: es atrisinÄju problÄmu, joprojÄm nesaprotu iemeslu =(
Ja kÄds zina, uzmin, bija redzÄjums par iespÄjamiem Ŕīs problÄmas cÄloÅiem, es ļoti priecÄÅ”os dzirdÄt no jums komentÄros!
Avots: www.habr.com