Docker biltegiratze-migrazioaren arazoaren historia (docker root)

Duela pare bat egun baino gehiago, zerbitzarietako batean erabaki zen docker biltegiratzea (docker-ek edukiontzi eta irudi fitxategi guztiak gordetzen dituen direktorioa) aparteko atal batera eramatea.
gaitasun handiagoa zuen. Zereginak hutsala zirudien eta ez zituen arazoak iragartzen...

Lehen urratsak:

1. Gelditu eta hil gure aplikazioaren edukiontzi guztiak:

docker-compose down

ontzi asko baldin badaude eta konposizio ezberdinetan badaude, hau egin dezakezu:

docker rm -f $(docker ps -q)

2. Gelditu docker deabrua:

systemctl stop docker

3. Eraman direktorioa nahi duzun tokira:

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

4. Docker deabruari direktorio berrian bilatzeko esaten diogu. Hainbat aukera daude: edo erabili -g bandera deabrua bide berri batera seinalatzeko, edo erabili dugun systemd konfigurazioak. Edo esteka sinbolikoa. Ez naiz horren inguruko xehetasun gehiegi sartuko, Interneten dago. betea Docker root kokapen berri batera eramateko eskuliburuak.

5. Hasi docker deabrua eta ziurtatu leku egokian dagoela:

systemctl status docker

Irteerako lerroetako batean ikusi beharko genuke:

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

Aukera deabruari pasatzen zitzaiola ziurtatu genuen, orain egiaztatu dezagun aplikatu ote den (eskerrik asko inkvizitor68sl)!

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

6. Hasi gaitezen gure aplikazioa:

docker-compose up -d

7. Egiaztatu

Eta hemen dibertsioa hasten da, DBMS, MQ, dena ondo dago! Datu-basea osorik dago, dena funtzionatzen du... nginx izan ezik. Gure nginx eraikitzea dugu Kerberosekin eta gorteekin. Eta edukiontzien erregistroak ikusteak adierazi zuen ezin zuela /var/tmp-ra idatzi - Baimena ukatua. Hatzekin tenpluak oratu eta egoera aztertzen saiatzen naiz... Nola da posible hori? Dockerren irudia ez da aldatu. Direktorioa mugitu berri dugu. Beti funtzionatu zuen, eta hemen dago zuretzat... Esperimentuaren mesedetan, eskuekin edukiontzira sartu eta direktorio honen eskubideak aldatu nituen, zeuden erroa, erroa 755, eman erroa, erroa 777. Eta dena hasi zen... Pentsamendu bat hasi zen entzuten nire buruan - zentzugabekeriaren bat... Pentsatu nuen, ba, agian ez nuela zerbait kontuan hartu...

Fitxategietarako sarbide-eskubideekin maitemindu ginela erabaki nuen transferentzian. Aplikazioa gelditu dugu, docker deabrua, direktorio berria ezabatu eta /var/lib/docker direktorioa kopiatu dugu. rsync -a.

Orain dena ondo dagoela uste dut, gora dezagun Docker aplikazioa.

Aaand... arazoa geratu zen... Begiak kikildu zitzaizkidan. Nire makina birtualeko kontsolara joan nintzen, bertan hainbat proba egiten nituen, nginx irudi hau nuen, eta edukiontzi barrura igo nintzen, eta hemen /var/tmp direktorioaren eskubideak root, root 777 dira. Hau da, eskuz ezarri behar nuen bezalaxe. Baina irudiak berdinak dira!

xfs fitxategi-sistema nonahi erabiltzen zen.

Komandoa erabiliz alderatu nuen

docker inspect my-nginx:12345

Hash guztiak berdinak dira, guztiak bat-batean. Bai zerbitzarian eta baita nire makina birtualean ere. Tokiko nginx irudia ezabatu nuen eta berriro atera nuen erregistrotik, hainbat arrazoirengatik makina berean dagoela. Eta arazoa berdina da... Orain nire bigarren begia dardarka ari zait.

Jada ez naiz gogoratzen zer pentsamendu zeuden nire buruan, β€œAAAAAAAAA” eta beste gauza batzuk oihukatzeaz gain. Goizeko 4ak ziren, eta Docker iturburu kodea erabili zen irudi-geruzak hashing printzipioa ulertzeko. Edari energetikoaren hirugarren lata ireki zen. Eta azkenean hashing-ak fitxategia, bere edukia bakarrik hartzen duela kontuan, baina EZ SARTZEKO ESKUBIDEAK! Hau da, modu misteriotsu batean gure eskubideak galdu dira, selinux desgaituta dago, acl ez da erabiltzen eta ez dago itsatsirik.

Tokiko irudia ezabatu nuen, docker erregistrotik ere ezabatu nuen irudia eta berriro bultzatu nuen. Eta dena funtzionatu zuen. Ematen du transferentzian eskubideak galdu zirela, bai tokiko irudiaren barruan, bai erregistroan dagoen irudiaren barruan. Esan bezala, hainbat arrazoirengatik auto berean kokatu zen. Eta ondorioz, /var/lib/docker direktorio batean.

Eta docker-aren begirada direktorio zaharrera itzultzen saiatu ote ziren galderari aurrea hartuz - ez, ez zuten saiatu, ai, zirkunstantziak ez zuten baimendu. Bai, eta benetan asmatu nahi nuen.

Artikulu hau idatzi ondoren, arazoaren konponbidea begi-bistakoa iruditzen zait, baina azterketa garaian ez zitzaidan hala iruditu. Egia esan, Googlen egin nuen eta ez nuen antzeko egoerarik aurkitu.

Emaitza: arazoa konpondu dut, oraindik ez dut ulertzen arrazoia =(

Norbaitek badaki, asmatzen badu, arazo honen arrazoi posibleei buruzko ikuspegia izan balu, oso pozik egongo naiz zuei entzutea iruzkinetan!

Iturria: www.habr.com

Gehitu iruzkin berria