Storia di u prublema di migrazione di l'almacenamiento docker (docker root)

Micca più di un paru di ghjorni fà, hè statu decisu nantu à unu di i servitori di trasfurmà l'almacenamiento docker (u repertoriu induve docker guarda tutti i fugliali di u containeru è l'imaghjini) in una sezione separata, chì
avia una capacità maiò. U compitu paria triviale è ùn hà micca anticipatu prublemi...

Cumminciare:

1. Ferma è tumbà tutti i cuntenituri di a nostra applicazione:

docker-compose down

se ci sò assai cuntenituri è sò in diverse cumpusizioni, pudete fà questu:

docker rm -f $(docker ps -q)

2. Arresta u daemon docker:

systemctl stop docker

3. Sposta u cartulare à u locu desideratu:

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

4. Dicemu à u daemon docker per circà in u novu repertoriu. Ci hè parechje opzioni: o aduprate a bandiera -g per indicà u daemon à una nova strada, o cunfigurazione systemd, chì avemu usatu. O un ligame simbolicu. Ùn andaraghju in troppu dettagliu nantu à questu, hè in Internet. piena manuali per trasfurmà a radica di docker in un novu locu.

5. Accuminciate u daemon docker è assicuratevi chì pare in u locu ghjustu:

systemctl status docker

In una di e linee di output duvemu vede:

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

Avemu assicuratu chì l'opzione hè stata passata à u daemon, avà verificamu s'ellu l'hà applicata (grazie inkvizitor68sl)!

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

6. Cuminciamu a nostra applicazione:

docker-compose up -d

7. Cuntrollà

E quì u divertimentu principia, DBMS, MQ, tuttu va bè! A basa di dati hè intacta, tuttu funziona ... eccettu nginx. Avemu u nostru propiu nginx build cù Kerberos è cortigiani. È vede i logs di u containeru hà indicatu chì ùn pò micca scrive in /var/tmp - Permissione denegata. Impastu i mo tempii cù e dite è pruvate d'analizà a situazione... Cumu hè pussibule ? L'imaghjini di Docker ùn hà micca cambiatu. Avemu solu spustatu u cartulare. Sempre hà travagliatu, è quì hè per voi ... Per a fine di l'esperimentu, sò andatu in u cuntinuu cù e mo mani è cambiatu i diritti à questu repertoriu, ci era radica, radica 755, hà datu radica, radica 777. È tuttu hà cuminciatu... Un pensamentu hà cuminciatu à sonà in a mo testa - una spezia di sciocchezza... Pensu, bè, forse ùn aghju micca pigliatu qualcosa in contu...

Aghju decisu chì avemu innamuratu cù i diritti d'accessu à i schedari durante u trasferimentu. Firmamu l'applicazione, u demone docker, sguassate u novu repertoriu è copiamu u cartulare /var/lib/docker usendu rsync -a.

Pensu chì tuttu va bè avà, aumentemu l'applicazione Docker.

Aaand... u prublemu restava... U mo ochju si strinse. Aghju precipitatu à a cunsola di a mo macchina virtuale, induve eseguite diverse teste, aghju avutu sta maghjina nginx, è aghju cullatu in u cuntinuu, è quì i diritti à u repertoriu /var/tmp sò root, root 777. u listessu cum'è aghju avutu à stabilisce manualmente. Ma l'imaghjini sò identici!

U sistema di schedari xfs hè stata utilizata in ogni locu.

Aghju paragunatu cù u cumandamentu

docker inspect my-nginx:12345

Tutti i hashes sò identici, tutti unu à unu. Sia nantu à u servitore è nantu à a mo macchina virtuale. Aghju sguassatu l'imaghjini nginx lucale è l'hà tiratu di novu da u registru, chì per una quantità di motivi hè nantu à a stessa macchina. È u prublema hè listessa... Avà u mo secondu ochju si stringhje.

Ùn mi ricordu più di ciò chì pinsamenti eranu in a mo testa, in più di gridà "AAAAAAAAA" è altre cose. Era 4 ore di a matina, è u codice fonte Docker hè stata utilizata per capisce u principiu di l'hashing image layers. Apertu a terza cantina di bevande energetica. È à a fine m'hà capitu chì l'hashing solu piglia in contu u schedariu, u so cuntenutu, ma NON DRITTI DI ACCESSO! Vale à dì, in qualchì modu misteriosu i nostri diritti sò stati persi, selinux hè disattivatu, acl ùn hè micca usatu, è ùn ci hè micca un pocu appiccicosu.

Aghju sguassatu l'imaghjini lucali, ancu sguassatu l'imaghjini da u registru docker è l'aghju spintu di novu. È tuttu hà travagliatu. Ci hè chì durante u trasferimentu i diritti sò stati persi, sia in l'imaghjini lucali sia in l'imaghjini chì si trovanu in u registru. Cum'è aghju dettu, per una quantità di mutivi si trova nantu à a stessa vittura. È in u risultatu, in un cartulare /var/lib/docker.

E anticipendu a quistione s'ellu anu pruvatu à rinvià u sguardu di u docker à u vechju repertoriu - no, ùn anu micca pruvatu, alas, e circustanze ùn permettenu micca. Iè, è mi vulia veramente capisce.

Dopu avè scrittu stu articulu, a suluzione à u prublema mi pari ovvia, ma à u mumentu di l'analisi ùn pareva micca cusì. Onestamente, aghju Googled è ùn aghju micca truvatu situazioni simili.

Risultatu: aghju risoltu u prublema, ùn aghju micca capitu ancu u mutivu =(

Sì qualchissia sapi, guess, hà avutu una visione di e pussibuli cause di stu prublema, saraghju assai felice di sente da voi in i cumenti!

Source: www.habr.com

Add a comment