Докер хадгалах сангийн шилжилтийн асуудлын түүх (докерын үндэс)

Хэдхэн хоногийн өмнө серверүүдийн аль нэг дээр докер хадгалах санг (докер бүх контейнер болон зургийн файлуудыг хадгалдаг лавлах) тусдаа хэсэг рүү шилжүүлэхээр шийдсэн.
илүү их хүчин чадалтай байсан. Даалгавар нь өчүүхэн мэт санагдаж, бэрхшээлийг урьдчилан таамаглаагүй ...

Эхэлцгээе:

1. Манай програмын бүх савыг зогсоож устгана уу:

docker-compose down

Хэрэв олон тооны сав байгаа бөгөөд тэдгээр нь өөр өөр найрлагатай бол та үүнийг хийж болно.

docker rm -f $(docker ps -q)

2. Докер демоныг зогсоо:

systemctl stop docker

3. Лавлахыг хүссэн байршил руу зөөнө үү:

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

4. Бид докер демондоо шинэ лавлах руу харахыг хэлдэг. Хэд хэдэн сонголт байдаг: демоныг шинэ зам руу чиглүүлэхийн тулд -g тугийг ашиглах эсвэл бидний ашигласан systemd тохиргоог ашиглана уу. Эсвэл тэмдэгт холбоос. Би энэ талаар нэг их дэлгэрэнгүй ярихгүй, Интернет дээр байгаа. дүүрэн докерын үндэсийг шинэ байршилд шилжүүлэх гарын авлага.

5. Докер демоныг эхлүүлж, зөв ​​газарт нь байгаа эсэхийг шалгаарай:

systemctl status docker

Гаралтын шугамуудын аль нэгэнд бид дараахь зүйлийг харах ёстой.

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

Бид сонголтыг демон руу дамжуулсан эсэхийг шалгасан, одоо үүнийг ашигласан эсэхийг шалгацгаая (баярлалаа) inkvizitor68sl)!

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

6. Бид програмаа эхлүүлцгээе:

docker-compose up -d

7. Шалгах

Эндээс хөгжилтэй зүйл эхэлж байна, DBMS, MQ, бүх зүйл сайхан байна! Өгөгдлийн сан бүрэн бүтэн, nginx-ээс бусад бүх зүйл ажилладаг. Бид Kerberos болон courtesans-тай өөрийн гэсэн nginx-тэй. Мөн контейнерийн бүртгэлийг үзэхэд энэ нь /var/tmp руу бичих боломжгүй болохыг харуулж байна - Зөвшөөрөл татгалзсан. Би хуруугаараа сүмээ зуурч, нөхцөл байдалд дүн шинжилгээ хийхийг оролддог ... Энэ яаж боломжтой вэ? Докерын зураг өөрчлөгдөөгүй. Бид зүгээр л лавлахыг зөөсөн. Энэ нь үргэлж ажилладаг байсан бөгөөд энэ нь танд зориулагдсан юм ... Туршилтын үүднээс би саванд гараараа орж, энэ лавлахын эрхийг өөрчилсөн. root, root 755, өгсөн root, root 777. Тэгээд бүх зүйл эхэлсэн ... Миний толгойд нэг бодол сонсогдож эхлэв - ямар нэгэн утгагүй зүйл ... Би ямар нэг зүйлийг анхаарч үзээгүй байж магадгүй гэж бодсон ...

Шилжүүлгийн явцад бид файлд хандах эрхэнд дурласан гэж би шийдсэн. Бид программ, докер дэмоныг зогсоож, шинэ лавлахыг устгаад /var/lib/docker санг хуулсан. rsync -a.

Одоо бүх зүйл сайхан байна гэж бодож байна, Docker програмыг суулгацгаая.

Ааан... асуудал үлдлээ... Нүд минь анив. Би виртуал машиныхаа консол руу гүйж, янз бүрийн туршилтуудыг ажиллуулж, энэ nginx дүрстэй байсан бөгөөд би контейнер дотор авирсан бөгөөд энд /var/tmp директорийн эрх нь root, root 777 юм. би гараар тохируулах хэрэгтэй байсантай адил. Гэхдээ зургууд нь адилхан!

Xfs файлын системийг хаа сайгүй ашигладаг байсан.

Би командыг ашиглан харьцуулсан

docker inspect my-nginx:12345

Бүх хэш нь адилхан, бүгд нэгээс нэг юм. Сервер дээр болон миний виртуал машин дээр. Би орон нутгийн nginx дүрсийг устгаад хэд хэдэн шалтгааны улмаас нэг машин дээр байгаа бүртгэлээс дахин татаж авсан. Тэгээд асуудал нь адилхан... Одоо миний хоёр дахь нүд анивчаад байна.

“АААААААААА” гэх мэтээр орилохоос гадна толгойд ямар бодол орж байсныг санахаа больсон. Өглөөний 4 цаг болж байсан бөгөөд зургийн давхаргыг хэшлэх зарчмыг ойлгохын тулд Docker-ийн эх кодыг ашигласан. Эрчим хүчний ундааны гурав дахь лаазыг онгойлгов. Эцэст нь хэш нь зөвхөн файл, түүний агуулгыг харгалздаг гэдгийг би ойлгосон, гэхдээ ЭРХИЙГ АВАХГҮЙ! Энэ нь ямар нэгэн нууцлаг байдлаар бидний эрх алдагдаж, selinux идэвхгүй болсон, acl ашиглагдаагүй, наалдамхай бит байхгүй байна.

Би орон нутгийн зургийг устгаад, мөн докерын бүртгэлээс зургийг устгаад дахин түлхэв. Тэгээд бүх зүйл ажилласан. Шилжүүлгийн явцад орон нутгийн дүр төрх, бүртгэлд байгаа дүрс дотор эрхээ алдсан нь харагдаж байна. Би аль хэдийн хэлсэнчлэн хэд хэдэн шалтгааны улмаас нэг машин дээр байрладаг байсан. Үүний үр дүнд нэг директор /var/lib/docker.

Тэд усан онгоцны зогсоолын харцыг хуучин лавлах руу буцаахыг оролдсон уу гэсэн асуултыг хүлээж байсан - үгүй, тэд оролдсонгүй, харамсалтай нь нөхцөл байдал үүнийг зөвшөөрөөгүй. Тийм ээ, би үүнийг ойлгохыг үнэхээр хүсч байсан.

Энэ нийтлэлийг бичсэний дараа асуудлын шийдэл нь надад ойлгомжтой мэт санагдаж байсан ч дүн шинжилгээ хийх үед тийм биш юм шиг санагдсан. Үнэнийг хэлэхэд, би Google-д хайгаад үүнтэй төстэй нөхцөл байдал олдсонгүй.

Үр дүн: Би асуудлыг шийдсэн, шалтгааныг нь ойлгохгүй байна =(

Хэрэв хэн нэгэн энэ асуудлын боломжит шалтгаануудын талаар мэддэг, таамаглаж, төсөөлж байсан бол сэтгэгдэл дээр танаас сонсохдоо би маш их баяртай байх болно!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх