Докер сактагычынын миграция көйгөйүнүн тарыхы (докер тамыры)

Бир нече күн мурун серверлердин биринде докер сактагычын (докер бардык контейнер жана сүрөт файлдарын сактаган каталог) өзүнчө бөлүмгө жылдыруу чечими кабыл алынган.
көбүрөөк мүмкүнчүлүккө ээ болгон. Тапшырма анча-мынча көрүнгөн жана кыйынчылыкты алдын ала айткан эмес...

Эмнеден баштоо керек?

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тен башкасы. Бизде 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'да карап, окшош жагдайларды тапкан жокмун.

Натыйжа: Мен маселени чечтим, себебин дагы деле түшүнбөйм =(

Эгер кимдир бирөө бул көйгөйдүн мүмкүн болуучу себептерин билсе, болжолдосо, мен комментарийлерде сизден кабар алганыма абдан кубанычтамын!

Source: www.habr.com

Комментарий кошуу