Kasaysayan sa problema sa paglalin sa docker storage (docker root)

Dili pa sa usa ka magtiayon nga mga adlaw ang milabay, kini nakahukom sa usa sa mga server sa pagbalhin sa docker storage (ang direktoryo diin ang docker nagtipig sa tanan nga mga sudlanan ug mga file sa imahe) ngadto sa usa ka bulag nga seksyon, nga
adunay mas dako nga kapasidad. Ang buluhaton daw walay hinungdan ug wala magtagna ug kasamok...

Pagsugod:

1. Hunong ug patya ang tanan nga mga sudlanan sa among aplikasyon:

docker-compose down

kung adunay daghang mga sudlanan ug kini naa sa lainlaing mga komposisyon, mahimo nimo kini:

docker rm -f $(docker ps -q)

2. Hunonga ang docker daemon:

systemctl stop docker

3. Ibalhin ang direktoryo sa gusto nga lokasyon:

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

4. Gisultihan namo ang docker nga daemon nga mangita sa bag-ong direktoryo. Adunay daghang mga kapilian: gamita ang -g nga bandila aron itudlo ang daemon sa usa ka bag-ong agianan, o systemd configs, nga among gigamit. O usa ka symlink. Dili na ako magdetalye bahin niini, naa kini sa Internet. puno mga manwal sa pagbalhin sa docker root sa usa ka bag-ong lokasyon.

5. Sugdi ang docker daemon ug siguroha nga kini makita sa hustong dapit:

systemctl status docker

Sa usa sa mga linya sa output kinahanglan natong makita:

β”œβ”€19493 /usr/bin/dockerd --data-root=/docker/data/storage

Gisiguro namo nga ang opsyon gipasa ngadto sa daemon, karon atong susihon kung kini nag-apply niini (salamat inkvizitor68sl)!

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

6. Atong sugdan ang atong aplikasyon:

docker-compose up -d

7. Pagsusi

Ug dinhi nagsugod ang kalingawan, DBMS, MQ, maayo ang tanan! Ang database wala'y labot, ang tanan nagtrabaho ... gawas sa nginx. Naa miy kaugalingong nginx build kauban ang Kerberos ug courtesans. Ug ang pagtan-aw sa mga log sa sudlanan nagpakita nga dili kini makasulat sa / var / tmp - Gibalibaran ang pagtugot. Akong gimasa ang akong mga templo gamit ang akong mga tudlo ug naningkamot sa pag-analisar sa sitwasyon... Sa unsang paagi kini posible? Ang imahe sa Docker wala mausab. Gibalhin ra namo ang direktoryo. Kanunay kini nga nagtrabaho, ug ania kini alang kanimo ... Alang sa eksperimento, miadto ako sa sudlanan gamit ang akong mga kamot ug giusab ang mga katungod sa kini nga direktoryo, adunay gamut, gamut 755, mihatag gamut, gamut 777. Ug ang tanan nagsugod ... Usa ka hunahuna nagsugod sa tingog sa akong ulo - usa ka matang sa binuang ... Naghunahuna ko, maayo, tingali wala ako maghunahuna sa usa ka butang ...

Nakahukom ko nga nahigugma kami sa mga katungod sa pag-access sa mga file sa panahon sa pagbalhin. Gipahunong namo ang aplikasyon, ang docker daemon, gitangtang ang bag-ong direktoryo ug gikopya ang /var/lib/docker nga direktoryo gamit ang rsync -a.

Sa akong hunahuna ang tanan maayo na karon, atong ipataas ang aplikasyon sa Docker.

Aaand... nagpabilin ang problema... Mikibot ang akong mata. Nagdali ko sa console sa akong virtual machine, diin nagdagan ko sa lainlaing mga pagsulay, naa nako kini nga nginx nga imahe, ug misaka ako sa sulud sa sulud, ug dinhi ang mga katungod sa / var / tmp direktoryo mao ang gamut, gamut 777. Kana mao, ang sama sa kinahanglan nako nga itakda sa mano-mano. Apan ang mga imahe managsama!

Ang xfs file system gigamit bisan asa.

Gikumpara nako gamit ang command

docker inspect my-nginx:12345

Ang tanan nga mga hash managsama, tanan usa sa usa. Pareho sa server ug sa akong virtual machine. Gitangtang nako ang lokal nga nginx nga imahe ug gibira kini pag-usab gikan sa rehistro, nga sa daghang mga hinungdan naa sa parehas nga makina. Ug ang problema mao ra ang ... Karon ang akong ikaduha nga mata nagkibot.

Wala na ko kahinumdom kung unsa ang mga hunahuna sa akong ulo, gawas sa pagsinggit "AAAAAAAAA" ug uban pa. Alas 4 na sa buntag, ug gigamit ang Docker source code aron masabtan ang prinsipyo sa pag-hash sa mga layer sa imahe. Giablihan ang ikatulo nga lata sa energy drink. Ug sa katapusan misantop sa akong hunahuna nga ang pag-hash naghunahuna lamang sa file, sa sulod niini, apan DILI ACCESS KATUNGOD! Sa ato pa, sa usa ka misteryosong paagi nawala ang among mga katungod, ang selinux na-disable, wala gigamit ang acl, ug wala’y sticky bit.

Gitangtang nako ang lokal nga imahe, gitangtang usab ang imahe gikan sa rehistro sa docker ug giduso kini pag-usab. Ug ang tanan nagtrabaho. Kini nahimo nga sa panahon sa pagbalhin nawala ang mga katungod, sa sulod sa lokal nga imahe ug sa sulod sa imahe nga nahimutang sa rehistro. Sa ako nang giingon, tungod sa daghang mga hinungdan kini nahimutang sa parehas nga awto. Ug isip resulta, sa usa ka direktoryo /var/lib/docker.

Ug nagpaabut sa pangutana kung gisulayan ba nila nga ibalik ang pagtan-aw sa pantalan sa daan nga direktoryo - dili, wala nila gisulayan, alaut, ang mga kahimtang wala magtugot niini. Oo, ug gusto gyud nako nga mahibal-an kini.

Pagkahuman sa pagsulat niini nga artikulo, ang solusyon sa problema ingon og klaro alang kanako, apan sa panahon sa pag-analisar ingon og dili. Sa tinuod lang, nag-Google ko ug wala koy nakit-an nga susamang mga sitwasyon.

Resulta: Nasulbad nako ang problema, wala gihapon ko kasabot sa rason =(

Kung adunay nahibal-an, nakatag-an, adunay panan-awon bahin sa posible nga mga hinungdan sa kini nga problema, malipay ako nga makadungog gikan kanimo sa mga komento!

Source: www.habr.com

Idugang sa usa ka comment