Hanes problem mudo storfa docwr (gwraidd y docwr)

Dim mwy nag ychydig ddyddiau yn ôl, penderfynwyd ar un o'r gweinyddwyr i symud storfa docwyr (y cyfeiriadur lle mae docwr yn storio'r holl ffeiliau cynhwysydd a delwedd) i adran ar wahân, sy'n
roedd ganddo fwy o gapasiti. Roedd y dasg yn ymddangos yn ddibwys ac nid oedd yn rhagweld trafferth ...

Dechrau arni:

1. Stopio a lladd holl gynwysyddion ein cais:

docker-compose down

os oes llawer o gynwysyddion a'u bod mewn gwahanol gyfansoddiadau, gallwch chi wneud hyn:

docker rm -f $(docker ps -q)

2. Stopiwch y daemon docwr:

systemctl stop docker

3. Symudwch y cyfeiriadur i'r lleoliad dymunol:

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

4. Rydyn ni'n dweud wrth yr ellyll docwr i edrych yn y cyfeiriadur newydd. Mae yna sawl opsiwn: naill ai defnyddiwch y faner -g i bwyntio'r ellyll at lwybr newydd, neu gyfluniadau systemd, a ddefnyddiwyd gennym. Neu ddolen syml. Nid af i ormod o fanylion am hyn, mae ar y Rhyngrwyd. llawn llawlyfrau ar symud gwraidd y docwr i leoliad newydd.

5. Dechreuwch yr ellyll docwr a gwnewch yn siŵr ei fod yn edrych yn y lle iawn:

systemctl status docker

Yn un o'r llinellau allbwn dylem weld:

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

Gwnaethom yn siŵr bod yr opsiwn yn cael ei drosglwyddo i'r ellyll, nawr gadewch i ni wirio a oedd yn ei gymhwyso (diolch incvizitor68sl)!

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

6. Gadewch i ni ddechrau ein cais:

docker-compose up -d

7. Gwirio

A dyma'r hwyl yn dechrau, DBMS, MQ, popeth yn iawn! Mae'r gronfa ddata yn gyfan, mae popeth yn gweithio ... ac eithrio nginx. Mae gennym ein hadeilad nginx ein hunain gyda Kerberos a chwrteisi. A dangosodd edrych ar y logiau cynhwysydd na all ysgrifennu at /var/tmp - Gwrthodwyd caniatâd. Rwy'n tylino fy nhemlau â'm bysedd ac yn ceisio dadansoddi'r sefyllfa... Sut mae hyn yn bosibl? Ni newidiodd delwedd y Docker. Rydym newydd symud y cyfeiriadur. Roedd bob amser yn gweithio, a dyma hi i chi... Er mwyn arbrofi, es i mewn i'r cynhwysydd gyda fy nwylo a newid yr hawliau i'r cyfeiriadur hwn, roedd yna gwraidd, gwraidd 755, rhoddodd gwraidd, gwraidd 777. A dechreuodd popeth... Dechreuodd meddwl swnio yn fy mhen - rhyw fath o nonsens... meddyliais, wel, efallai na wnes i gymryd rhywbeth i ystyriaeth...

Penderfynais ein bod wedi syrthio mewn cariad â'r hawliau mynediad i'r ffeiliau yn ystod y trosglwyddiad. Fe wnaethon ni stopio'r cais, yr ellyll docwr, dileu'r cyfeiriadur newydd a chopïo'r cyfeiriadur /var/lib/docker gan ddefnyddio rsync -a.

Rwy'n credu bod popeth yn iawn nawr, gadewch i ni godi'r cais Docker.

Aaa... roedd y broblem yn parhau... Plygodd fy llygad. Rhuthrais i gonsol fy mheiriant rhithwir, lle rwy'n rhedeg profion amrywiol, cefais y ddelwedd nginx hon, a dringais y tu mewn i'r cynhwysydd, ac yma mae'r hawliau i'r cyfeiriadur /var/tmp yn wraidd, gwraidd 777. Hynny yw, y yr un peth ag yr oedd yn rhaid i mi ei osod â llaw. Ond mae'r delweddau yn union yr un fath!

Defnyddiwyd y system ffeiliau xfs ym mhobman.

Cymharais ddefnyddio'r gorchymyn

docker inspect my-nginx:12345

Mae pob hashes yn union yr un fath, i gyd un i un. Ar y gweinydd ac ar fy mheiriant rhithwir. Fe wnes i ddileu'r ddelwedd nginx lleol a'i dynnu eto o'r gofrestrfa, sydd am nifer o resymau ar yr un peiriant. Ac mae'r broblem yr un peth ... Nawr mae fy ail lygad yn plicio.

Nid wyf bellach yn cofio pa feddyliau oedd yn fy mhen, ar wahân i weiddi “AAAAAAAAA” a phethau eraill. Roedd hi'n 4 o'r gloch y bore, a defnyddiwyd cod ffynhonnell Docker i ddeall yr egwyddor o stwnsio haenau delwedd. Agorodd y trydydd can o ddiod ynni. Ac yn y diwedd fe wawriodd arnaf mai dim ond y ffeil, ei chynnwys, y mae hashing yn ei chymryd i ystyriaeth NID HAWLIAU MYNEDIAD! Hynny yw, mewn rhyw ffordd ddirgel mae ein hawliau wedi'u colli, mae selinux yn anabl, nid yw acl yn cael ei ddefnyddio, ac nid oes darn gludiog.

Fe wnes i ddileu'r ddelwedd leol, hefyd dileu'r ddelwedd o gofrestrfa'r docwr a'i gwthio eto. Ac fe weithiodd popeth. Mae'n ymddangos bod yr hawliau wedi'u colli yn ystod y trosglwyddiad, y tu mewn i'r ddelwedd leol a thu mewn i'r ddelwedd sy'n gorwedd yn y gofrestrfa. Fel y dywedais eisoes, am nifer o resymau roedd wedi'i leoli ar yr un car. Ac o ganlyniad, mewn un cyfeiriadur /var/lib/docker.

A chan ragweld y cwestiwn a wnaethant geisio dychwelyd syllu'r docwr i'r hen gyfeiriadur - na, ni wnaethant geisio, gwaetha'r modd, nid oedd yr amgylchiadau'n caniatáu hynny. Ydw, ac roeddwn i wir eisiau darganfod y peth.

Ar ôl ysgrifennu'r erthygl hon, mae'r ateb i'r broblem yn ymddangos yn amlwg i mi, ond ar adeg y dadansoddiad nid oedd yn ymddangos felly. Yn onest, gwnes i Google a wnes i ddim dod o hyd i sefyllfaoedd tebyg.

Canlyniad: Fe wnes i ddatrys y broblem, dwi dal ddim yn deall y rheswm =(

Os oes unrhyw un yn gwybod, yn dyfalu, wedi cael gweledigaeth am achosion posibl y broblem hon, byddaf yn falch iawn o glywed gennych yn y sylwadau!

Ffynhonnell: hab.com

Ychwanegu sylw