Докерлік сақтау орнын тасымалдау мәселесінің тарихы (докер түбірі)

Бірнеше күн бұрын серверлердің бірінде докер қоймасын (доккер барлық контейнерлер мен кескін файлдарын сақтайтын каталог) бөлек бөлімге көшіру туралы шешім қабылданды.
үлкен сыйымдылыққа ие болды. Тапсырма жеңіл болып көрінді және қиындықты алдын ала көрсетпеді ...

бастайық:

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 жалауын пайдаланыңыз немесе біз пайдаланған жүйелік конфигурациялар. Немесе символдық сілтеме. Мен бұл туралы тым егжей-тегжейлі айтпаймын, бұл Интернетте. толы докер түбірін жаңа орынға жылжыту бойынша нұсқаулықтар.

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. Тексеріңіз

Міне, қызық басталады, ДҚБЖ, MQ, бәрі жақсы! Дерекқор бүтін, барлығы жұмыс істейді... nginx-тен басқа. Бізде Kerberos және куртизандармен жеке nginx құрастыру бар. Контейнер журналдарын қарау оның /var/tmp файлына жаза алмайтынын көрсетті - Рұқсат берілмеді. Саусақтарыммен самай илеп, жағдайды талдауға тырысамын... Бұл қалай болуы мүмкін? Docker кескіні өзгерген жоқ. Біз жай ғана каталогты жылжыттық. Ол әрқашан жұмыс істеді, міне, бұл сізге ... Эксперимент үшін мен контейнерге қолыммен кіріп, осы каталогтың құқықтарын өзгерттім, түбір, түбір 755, берді түбір, түбір 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

пікір қалдыру