Storja tal-problema tal-migrazzjoni tal-ħażna tad-docker (docker root)

Mhux aktar minn ftit jiem ilu, ġie deċiż fuq wieħed mis-servers li jċaqlaq il-ħażna tad-docker (id-direttorju fejn id-docker jaħżen il-fajls kollha tal-kontejners u tal-immaġni) għal sezzjoni separata, li
kellu kapaċità akbar. Il-kompitu deher trivjali u ma bassretx problemi...

Nibdew:

1. Waqqaf u oqtol il-kontenituri kollha tal-applikazzjoni tagħna:

docker-compose down

jekk hemm ħafna kontenituri u huma f'kompożizzjonijiet differenti, tista 'tagħmel dan:

docker rm -f $(docker ps -q)

2. Waqqaf id-daemon docker:

systemctl stop docker

3. Mexxi d-direttorju fil-post mixtieq:

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

4. Aħna ngħidu lid-daemon docker biex ifittex fid-direttorju l-ġdid. Hemm diversi għażliet: jew uża l-bandiera -g biex tipponta d-daemon lejn triq ġdida, jew systemd configs, li użajna. Jew symlink. Mhux se nidħol f'ħafna dettall dwar dan, huwa fuq l-Internet. sħiħa manwali dwar iċ-ċaqliq tal-għeruq tad-docker għal post ġdid.

5. Ibda d-daemon docker u kun żgur li jidher fil-post it-tajjeb:

systemctl status docker

F'waħda mil-linji tal-output għandna naraw:

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

Kun żgur li l-għażla għaddiet lid-daemon, issa ejja niċċekkjaw jekk applikahiex (grazzi inkvizitor68sl)!

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

6. Ejja nibdew l-applikazzjoni tagħna:

docker-compose up -d

7. Iċċekkja

U hawn jibda l-gost, DBMS, MQ, kollox tajjeb! Id-database hija intatta, kollox jaħdem... ħlief nginx. Għandna nginx tagħna stess build ma Kerberos u courtesans. U meta tara r-reġistri tal-kontejners indika li ma tistax tikteb f'/var/tmp - Permess miċħud. Ngħaqqad it-tempji b’subgħajh u nipprova janalizza s-sitwazzjoni... Dan kif hu possibbli? L-immaġni Docker ma nbidlitx. Aħna biss mċaqalqa d-direttorju. Dejjem ħadem, u hawn għalik... Għall-fini tal-esperiment, dħalt fil-kontenitur b'idi u biddilt id-drittijiet għal dan id-direttorju, kien hemm għerq, għerq 755, taw għerq, għerq 777. U beda kollox... F'rasi beda jinstema' ħsieb - xi tip ta' xi bla sens... Ħsibt, ukoll, forsi ma ħadtx xi ħaġa in kunsiderazzjoni...

Iddeċidejt li konna nħobbu d-drittijiet ta' aċċess għall-fajls waqt it-trasferiment. Waqqafna l-applikazzjoni, id-daemon docker, ħassarna d-direttorju l-ġdid u kkuppjajna d-direttorju /var/lib/docker bl-użu rsync -a.

Naħseb li kollox huwa tajjeb issa, ejja ngħollu l-applikazzjoni Docker.

Aaand... il-problema baqgħet... Għajni tgerbet. Ġejt lejn il-console tal-magna virtwali tiegħi, fejn għamilt diversi testijiet, kelli din l-immaġni nginx, u tlajt ġewwa l-kontenitur, u hawn id-drittijiet għad-direttorju /var/tmp huma root, root 777. Jiġifieri, il- l-istess kif kelli nissettja manwalment. Imma l-immaġini huma identiċi!

Is-sistema tal-fajls xfs intużat kullimkien.

I mqabbla bl-użu tal-kmand

docker inspect my-nginx:12345

Il-hashes kollha huma identiċi, kollha wieħed għal wieħed. Kemm fuq is-server kif ukoll fuq il-magna virtwali tiegħi. Ħassejt l-immaġni nginx lokali u ġibtha mill-ġdid mir-reġistru, li għal numru ta 'raġunijiet jinsab fuq l-istess magna. U l-problema hija l-istess... Issa t-tieni għajn tiegħi qed tħawwad.

M'għadniex niftakar x'ħsibijiet kien hemm f'rasi, minbarra li għajjat ​​"AAAAAAAAA" u affarijiet oħra. Kien l-4:XNUMX ta 'filgħodu, u l-kodiċi tas-sors Docker intuża biex jifhem il-prinċipju ta' hashing saffi ta 'immaġni. Infetaħ it-tielet bott ta 'xarba enerġetika. U fl-aħħar ħarġet fuqi li l-hashing iqis biss il-fajl, il-kontenut tiegħu, iżda MHUX DRITTIJIET TA' AĊĊESS! Jiġifieri, b'xi mod misterjuż id-drittijiet tagħna ntilfu, selinux huwa diżattivat, acl ma jintużax, u m'hemm l-ebda sticky bit.

Ħassejt l-immaġni lokali, ħassejt ukoll l-immaġni mir-reġistru tad-docker u erġajt imbuttha. U kollox ħadem. Jirriżulta li matul it-trasferiment id-drittijiet intilfu, kemm ġewwa l-immaġni lokali kif ukoll ġewwa l-immaġni li tinsab fir-reġistru. Kif diġà għedt, għal numru ta’ raġunijiet kienet tinsab fuq l-istess karozza. U bħala riżultat, f'direttorju wieħed /var/lib/docker.

U jantiċipaw il-mistoqsija jekk ippruvawx jirritornaw il-ħarsa tad-docker lejn id-direttorju l-antik - le, ma ppruvawx, sfortunatament, iċ-ċirkostanzi ma ppermettewhiex. Iva, u ridt tassew nifhem.

Wara li ktibt dan l-artiklu, is-soluzzjoni għall-problema tidher ovvja għalija, iżda fil-ħin tal-analiżi ma deherx hekk. Onestament, kont Google u ma sibtx sitwazzjonijiet simili.

Riżultat: I solvut il-problema, għadni ma nifhimx ir-raġuni =(

Jekk xi ħadd jaf, jaħtaf, kellu viżjoni dwar il-kawżi possibbli ta 'din il-problema, inkun kuntent ħafna li nisma' mingħandek fil-kummenti!

Sors: www.habr.com

Żid kumment