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.
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
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