Историја проблема миграције доцкер складишта (доцкер роот)

Пре не више од пар дана, одлучено је да један од сервера премести доцкер складиште (директоријум у који доцкер чува све датотеке контејнера и слика) у посебан одељак, који
имао већи капацитет. Задатак је изгледао тривијалан и није предвиђао невоље...

Почетак:

1. Зауставите и убијте све контејнере наше апликације:

docker-compose down

ако има пуно контејнера и они су у различитим саставима, можете урадити ово:

docker rm -f $(docker ps -q)

2. Зауставите доцкер демон:

systemctl stop docker

3. Померите директоријум на жељену локацију:

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

4. Кажемо доцкер демону да погледа у новом директоријуму. Постоји неколико опција: или користите ознаку -г да укажете демону на нову путању, или системске конфигурације, које смо користили. Или симболичка веза. Нећу ићи превише у детаље о овоме, то је на интернету. пун приручници о премештању корена доцкер-а на нову локацију.

5. Покрените доцкер демон и уверите се да изгледа на правом месту:

systemctl status docker

У једној од излазних линија требало би да видимо:

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

Уверили смо се да је опција прослеђена демону, а сада да проверимо да ли ју је применио (хвала инквизитор68сл)!

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

6. Почнимо нашу апликацију:

docker-compose up -d

7. Проверите

И ту почиње забава, ДБМС, МК, све је у реду! База је нетакнута, све ради...осим нгинка. Имамо сопствену нгинк верзију са Керберос-ом и куртизанама. А преглед евиденције контејнера показао је да не може да пише у /вар/тмп - дозвола одбијена. Прстима месим слепоочнице и покушавам да анализирам ситуацију... Како је то могуће? Доцкер слика се није променила. Управо смо померили именик. Увек је функционисало, и ево вам га... Ради експеримента, ушао сам рукама у контејнер и променио права на овај директоријум, било је корен, корен 755, дао корен, корен 777. И све је почело... Почела је да ми звучи мисао у глави - нека глупост... Мислио сам, па, можда нисам узео у обзир...

Одлучио сам да смо се заљубили у права приступа фајловима током преноса. Зауставили смо апликацију, доцкер демон, избрисали нови директоријум и копирали /вар/либ/доцкер директоријум користећи rsync -a.

Мислим да је сада све у реду, хајде да подигнемо Доцкер апликацију.

Ааа... проблем је остао... Око ми се трзло. Одјурио сам до конзоле своје виртуелне машине, где сам покренуо разне тестове, имао сам ову нгинк слику, и попео сам се у контејнер, а овде су права на /вар/тмп директоријум роот, роот 777. Односно, исто као што сам морао да подесим ручно. Али слике су идентичне!

Систем датотека кфс је коришћен свуда.

Упоредио сам користећи команду

docker inspect my-nginx:12345

Сви хешови су идентични, сви један према један. И на серверу и на мојој виртуелној машини. Избрисао сам локалну нгинк слику и поново је извукао из регистра, који се из више разлога налази на истој машини. А проблем је исти... Сад ми се друго око трза.

Не сећам се више које су ми мисли биле у глави, осим узвикивања „ААААААААА“ и других ствари. Било је 4 сата ујутру, а изворни код Доцкер-а је коришћен за разумевање принципа хеширања слојева слике. Отворио трећу конзерву енергетског пића. И на крају ми је синуло да хеширање узима у обзир само фајл, његов садржај, али НЕ ПРАВА ПРИСТУПА! То јест, на неки мистериозан начин су наша права изгубљена, селинук је онемогућен, ацл се не користи и нема лепљивог дела.

Избрисао сам локалну слику, такође сам обрисао слику из доцкер регистра и поново је гурнуо. И све је функционисало. Испоставило се да су током преноса права изгубљена, како унутар локалне слике, тако и унутар слике која лежи у регистру. Као што сам већ рекао, из више разлога се налазио на истом аутомобилу. И као резултат, у једном директоријуму /вар/либ/доцкер.

И предвиђајући питање да ли су покушали да врате докеров поглед на стари именик - не, нису покушали, авај, околности то нису дозвољавале. Да, и стварно сам желео да то схватим.

Након писања овог чланка, решење проблема ми се чини очигледним, али у време анализе није изгледало тако. Искрено, гуглао сам и нисам нашао сличне ситуације.

Резултат: Решио сам проблем, још увек не разумем разлог =(

Ако неко зна, нагађа, имао визију о могућим узроцима овог проблема, биће ми изузетно драго да чујем од вас у коментарима!

Извор: ввв.хабр.цом

Додај коментар