Docker storage miqrasiya probleminin tarixi (docker root)

Bir neçə gündən çox olmayaraq, serverlərdən birində docker yaddaşını (dokerin bütün konteyner və təsvir fayllarını saxladığı qovluq) ayrıca bölməyə köçürmək qərara alındı.
daha böyük imkanlara malik idi. Tapşırıq mənasız görünürdü və bəladan xəbər vermirdi...

Davam edək:

1. Tətbiqimizin bütün konteynerlərini dayandırın və öldürün:

docker-compose down

bir çox qab varsa və onlar müxtəlif tərkiblərdədirsə, bunu edə bilərsiniz:

docker rm -f $(docker ps -q)

2. Docker demonunu dayandırın:

systemctl stop docker

3. Kataloqu istədiyiniz yerə köçürün:

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

4. Docker demonuna deyirik ki, yeni kataloqa baxsın. Bir neçə variant var: ya daemonu yeni yola yönəltmək üçün -g bayrağından istifadə edin, ya da istifadə etdiyimiz sistem konfiqurasiyalarından istifadə edin. Və ya simvolik əlaqə. Bu barədə çox təfərrüata varmayacağam, internetdə var. dolu docker kökünün yeni yerə köçürülməsi üzrə təlimatlar.

5. Docker demonunu işə salın və onun düzgün yerdə göründüyünə əmin olun:

systemctl status docker

Çıxış xətlərindən birində biz görməliyik:

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

Seçimin demona ötürüldüyünə əmin olduq, indi onun tətbiq edib-etmədiyini yoxlayaq (təşəkkürlər) inkvizitor68sl)!

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

6. Tətbiqimizə başlayaq:

docker-compose up -d

7. Yoxlama

Və burada əyləncə başlayır, DBMS, MQ, hər şey yaxşıdır! Verilənlər bazası tamdır, hər şey işləyir... nginx istisna olmaqla. Kerberos və kurtisanlar ilə öz nginx quruluşumuz var. Konteyner qeydlərinə baxmaq onun /var/tmp-a yaza bilməyəcəyini göstərdi - İcazə rədd edildi. Barmaqlarımla məbədləri yoğururam və vəziyyəti təhlil etməyə çalışıram... Bu necə mümkündür? Docker şəkli dəyişmədi. Biz sadəcə qovluğu köçürdük. Həmişə işləyirdi və bu da sizin üçündür... Təcrübə xatirinə əllərimlə konteynerə girdim və bu kataloqun hüquqlarını dəyişdim, orada kök, kök 755, verdi kök, kök 777. Və hər şey başladı... Beynimdə bir fikir səslənməyə başladı - bir növ cəfəngiyat... Fikirləşdim ki, yaxşı, bəlkə nəyisə nəzərə almamışam...

Qərara gəldim ki, köçürmə zamanı fayllara giriş hüquqlarına aşiq olduq. Tətbiqi, docker demonunu dayandırdıq, yeni kataloqu sildik və /var/lib/docker qovluğunu kopyaladıq. rsync -a.

Düşünürəm ki, indi hər şey yaxşıdır, gəlin Docker tətbiqini qaldıraq.

Aaand... problem qaldı... Gözüm qıvrıldı. Mən virtual maşınımın konsoluna qaçdım, orada müxtəlif testlər keçirirəm, məndə bu nginx şəkli var idi və konteynerin içərisinə qalxdım və burada /var/tmp kataloqunun hüquqları root, root 777-dir. Mən əl ilə təyin etməli olduğum kimi. Ancaq şəkillər eynidir!

Xfs fayl sistemi hər yerdə istifadə olunurdu.

Komandadan istifadə edərək müqayisə etdim

docker inspect my-nginx:12345

Bütün hashlar eynidir, hamısı birə birdir. Həm serverdə, həm də virtual maşınımda. Mən yerli nginx şəklini sildim və bir sıra səbəblərə görə eyni maşında olan reyestrdən yenidən çıxardım. Problem eynidir... İndi ikinci gözüm seğirir.

“AAAAAAAAA” qışqırmaqdan və başqa şeylərdən başqa beynimdə hansı düşüncələrin olduğunu artıq xatırlamıram. Səhər saat 4-dür və Docker mənbə kodu görüntü qatlarının hashing prinsipini başa düşmək üçün istifadə edilmişdir. Enerji içkisinin üçüncü qutusu açıldı. Və sonda mənə məlum oldu ki, hashing yalnız faylı, onun məzmununu nəzərə alır, lakin HÜQUQLARA GİRİŞ DEYİL! Yəni hansısa müəmmalı şəkildə hüquqlarımız itirilib, selinux əlil olub, acl istifadə edilmir, yapışqan biti yoxdur.

Mən yerli şəkli sildim, şəkli də docker reyestrindən sildim və yenidən itələdim. Və hər şey işlədi. Məlum olub ki, köçürmə zamanı həm yerli təsvirin daxilində, həm də reyestrdə yatan təsvirin daxilində hüquqlar itirilib. Artıq dediyim kimi, bir sıra səbəblərə görə eyni avtomobildə yerləşirdi. Və nəticədə bir kataloqda /var/lib/docker.

Və dokerin baxışlarını köhnə kataloqa qaytarmağa çalışıblarmı sualını gözləyərək - yox, cəhd etmədilər, təəssüf ki, şərait buna imkan vermədi. Bəli və mən həqiqətən də bunu başa düşmək istəyirdim.

Bu yazını yazdıqdan sonra problemin həlli mənə aydın görünür, amma təhlil zamanı belə görünmürdü. Düzünü desəm, Google-da axtardım və oxşar vəziyyətlərə rast gəlmədim.

Nəticə: Problemi həll etdim, hələ də səbəbini başa düşə bilmirəm =(

Əgər kimsə bilirsə, təxmin edirsə, bu problemin mümkün səbəbləri haqqında bir vizyonu varsa, şərhlərdə sizdən çox şad olaram!

Mənbə: www.habr.com

Добавить комментарий