Таърихи мушкилоти муҳоҷирати нигаҳдории докер (решаи докер)

На бештар аз ду рӯз пеш, дар яке аз серверҳо қарор дода шуд, ки нигаҳдории докерро (феҳрист, ки дар он докер ҳама файлҳои контейнер ва тасвирро нигоҳ медорад) ба қисмати алоҳида интиқол дода шавад.
тавоноии бештар дошт. Ин вазифа ночиз менамуд ва душвориро пешгӯӣ намекард...

Оғоз:

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. Санҷед

Ва дар ин ҷо шавқовар оғоз мешавад, DBMS, MQ, ҳама чиз хуб аст! Махзани маълумот солим аст, ҳама чиз кор мекунад... ба истиснои nginx. Мо сохти nginx-и худро бо Kerberos ва courtesans дорем. Ва дидани гузоришҳои контейнер нишон дод, ки он ба /var/tmp навишта наметавонад - Иҷозат рад карда шуд. Ман бо ангуштонам х,амро хамир мекунам ва вазъиятро тахлил кардан мехохам... Ин чй тавр имконпазир аст? Тасвири Docker тағир наёфт. Мо танҳо директорияро кӯчондем. Он ҳамеша кор мекард ва ин ҷо барои шумост... Барои таҷриба ман бо дастонам ба контейнер даромадам ва ҳуқуқи ин директорияро иваз кардам, реша, реша 755, дод реша, реша 777. Ва ҳамааш оғоз шуд... Дар сарам андешае садо дод - як навъ сафсата... Фикр кардам, хуб, шояд чизеро ба назар нагирифтаам...

Ман қарор додам, ки мо ҳангоми интиқол ба ҳуқуқи дастрасӣ ба файлҳо ошиқ шудам. Мо барнома, демони докерро қатъ кардем, директорияи навро нест кардем ва феҳристи /var/lib/docker-ро бо истифода аз нусхабардорӣ кардем. rsync -a.

Ман фикр мекунам, ки ҳоло ҳама чиз хуб аст, биёед барномаи Docker-ро боло бардорем.

Ааанд... масъала монд... Чашмам кашид. Ман ба консоли мошини виртуалии худ шитофтам, ки дар он ҷо санҷишҳои гуногун мегузаронам, ман ин тасвири nginx доштам ва дар дохили контейнер баромадам ва дар ин ҷо ҳуқуқ ба директорияи /var/tmp root, root 777 мебошанд. ҳамон тавре ки ман бояд дастӣ танзим кунам. Аммо тасвирҳо якхелаанд!

Системаи файлии xfs дар ҳама ҷо истифода мешуд.

Ман бо истифода аз фармон муқоиса кардам

docker inspect my-nginx:12345

Ҳама hashes якхелаанд, ҳама як ба як. Ҳам дар сервер ва ҳам дар мошини виртуалии ман. Ман тасвири маҳаллии nginx-ро нест кардам ва онро дубора аз феҳрист кашидам, ки бо як қатор сабабҳо дар ҳамон мошин аст. Мушкили њамин аст... Њоло чашми дуюмам мечакад.

Ба гайр аз дод задани «АААААААА» ва дигар чизхо дар сарам чй фикрхо буд, дигар дар хотир надорам. Соат 4-и саҳар буд ва рамзи сарчашмаи Docker барои фаҳмидани принсипи ҳашинг кардани қабатҳои тасвир истифода мешуд. Қуттии сеюми нӯшокии энергетикӣ кушода шуд. Ва дар ниҳоят ба ман фаҳмидам, ки хэшинг танҳо файл, мундариҷаи онро ба назар мегирад, аммо БА ХУКУКИ ДАСТРАС НАМЕШАВАД! Яъне бо ягон роҳи пурасрор ҳуқуқи мо аз даст рафтааст, selinux маъюб шудааст, acl истифода намешавад ва бит часпак нест.

Ман тасвири маҳаллиро нест кардам, инчунин тасвирро аз феҳристи докер тоза кардам ва онро дубора тела додам. Ва ҳама чиз кор кард. Маълум мешавад, ки ҳангоми интиқол ҳуқуқҳо ҳам дар дохили симои маҳаллӣ ва ҳам дар дохили тасвири дар реестр мавҷудбуда аз даст рафтаанд. Тавре ки ман аллакай гуфтам, бо як қатор сабабҳо он дар як мошин ҷойгир буд. Ва дар натиҷа, дар як феҳрист /var/lib/docker.

Ва интизори саволе, ки оё онҳо кӯшиш карданд, ки нигоҳи докерро ба директорияи кӯҳна баргардонанд - не, онҳо кӯшиш накарданд, афсӯс, ки вазъият имкон намедиҳад. Бале, ва ман дар ҳақиқат мехостам инро фаҳмам.

Пас аз навиштани ин матлаб, роҳи ҳалли мушкилот ба назари ман равшан менамояд, аммо дар замони таҳлил ин тавр набуд. Рости гап, ман Google-ро ҷустуҷӯ кардам ва ҳолатҳои ба ин монандро наёфтам.

Натиҷа: Ман мушкилотро ҳал кардам, ман то ҳол сабабашро намефаҳмам =(

Агар касе донад, тахмин кунад, дар бораи сабабҳои эҳтимолии ин мушкилот тасаввуроте дошта бошад, ман аз шунидани шумо дар шарҳҳо хеле шод хоҳам шуд!

Манбаъ: will.com

Илова Эзоҳ