Geschicht vum Docker Storage Migratiounsproblem (Docker Root)

Net méi wéi e puer Deeg gouf et op engem vun de Serveren decidéiert, Docker-Späichere (de Verzeechnes wou den Docker all Container- a Bilddateien späichert) an eng separat Sektioun ze réckelen, déi
hat méi grouss Kapazitéit. D'Aufgab war trivial an huet keng Probleemer virausgesot ...

Ufänken:

1. Stop an ëmbréngen all Container vun eiser Applikatioun:

docker-compose down

wann et vill Container sinn a se a verschiddene Kompositioune sinn, kënnt Dir dëst maachen:

docker rm -f $(docker ps -q)

2. Stop den Docker Daemon:

systemctl stop docker

3. Beweegt de Verzeichnis op déi gewënscht Plaz:

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

4. Mir soen dem Docker Daemon fir an den neie Verzeichnis ze kucken. Et gi verschidde Méiglechkeeten: entweder benotzt den -g Fändel fir den Daemon op en neie Wee ze weisen, oder Systemd Konfiguratiounen, déi mir benotzt hunn. Oder e Symbol. Ech ginn net ze vill Detailer iwwer dëst, et ass um Internet. voll Handbücher iwwer d'Bewegung vum Docker Root op eng nei Plaz.

5. Start den Docker Daemon a gitt sécher datt et op der richteger Plaz ausgesäit:

systemctl status docker

An enger vun den Ausgangslinne solle mir gesinn:

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

Mir hunn dofir gesuergt datt d'Optioun un den Daemon weidergeleet gouf, loosst eis kucken ob et se applizéiert huet (Merci inkvisitor68sl)!

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

6. Loosst eis eis Applikatioun starten:

docker-compose up -d

7. Check

An hei fänkt de Spaass un, DBMS, MQ, alles ass gutt! D'Datebank ass intakt, alles funktionnéiert ... ausser nginx. Mir hunn eisen eegene nginx Build mat Kerberos a Courtesane. A kuckt d'Container Logbicher uginn datt et net op /var/tmp schreiwen kann - Erlaabnis refuséiert. Ech knéien meng Tempelen mat de Fanger a probéieren d'Situatioun ze analyséieren ... Wéi ass dat méiglech? Den Docker Bild huet sech net geännert. Mir hunn just den Dossier geplënnert. Et huet ëmmer geschafft, an hei ass et fir Iech ... Fir d'Experimenter sinn ech an de Container mat mengen Hänn gaang an d'Rechter op dësem Verzeechnes geännert, et waren root, root 755, ginn root, root 777. An alles huet ugefaang ... E Gedanke huet ugefaang a mengem Kapp ze kléngen - eng Zort Blödsinn ... Ech hu geduecht, gutt, vläicht hunn ech eppes net berücksichtegt ...

Ech hu beschloss, datt mir verléift mat den Zougangsrechter op d'Dateien während dem Transfert gefall sinn. Mir hunn d'Applikatioun gestoppt, den Docker-Daemon, den neie Verzeechnes geläscht an den /var/lib/docker Verzeichnis kopéiert mat rsync -a.

Ech mengen alles ass elo gutt, loosst eis d'Docker Applikatioun erhéijen.

Aaand... de Problem ass bliwwen... Meng Aen huet sech gedréckt. Ech sinn op d'Konsole vu menger virtueller Maschinn gerannt, wou ech verschidden Tester ausféieren, ech hat dëst nginx-Bild, an ech sinn am Container geklommen, an hei sinn d'Rechter vum /var/tmp-Verzeichnis root, root 777. Dat ass, de d'selwecht wéi ech manuell muss setzen. Awer d'Biller sinn identesch!

Den xfs Dateiesystem gouf iwwerall benotzt.

Ech hunn de Kommando vergläicht

docker inspect my-nginx:12345

All Hashes sinn identesch, all een zu een. Souwuel um Server wéi och op menger virtueller Maschinn. Ech hunn dat lokalt nginx Bild geläscht an et erëm aus der Registry gezunn, déi aus enger Rei vu Grënn op der selwechter Maschinn ass. An de Problem ass deeselwechten ... Elo zitt mäi zweet Auge.

Ech erënnere mech net méi wéi eng Gedanken a mengem Kapp waren, nieft dem Gejäiz "AAAAAAAAAA" an aner Saachen. Et war 4 Auer moies, an den Docker Quellcode gouf benotzt fir de Prinzip vun der Hashhing vu Bildschichten ze verstoen. Opgemaach déi drëtt Dose vun Energie drénken. A schlussendlech ass et mir opgefall datt d'Hashhing nëmmen de Fichier, säin Inhalt, awer NET Zougrëffsrechter! Dat ass, op iergendeng mysteriéis Manéier sinn eis Rechter verluer gaangen, selinux ass behënnert, acl gëtt net benotzt, an et gëtt kee Sticky Bit.

Ech hunn dat lokalt Bild geläscht, och d'Bild aus dem Docker Registry geläscht an erëm gedréckt. An alles huet geschafft. Et stellt sech eraus datt während dem Transfert d'Rechter verluer sinn, souwuel am lokalen Bild wéi och am Bild, deen am Registry läit. Wéi ech scho gesot hunn, war et aus verschiddene Grënn um selwechten Auto. An als Resultat, an engem Verzeichnis /var/lib/docker.

A virauszesoen op d'Fro ob si probéiert hunn dem Docker säi Bléck an den alen Verzeechnes zréckzebréngen - nee, si hunn net probéiert, leider, Ëmstänn hunn et net erlaabt. Jo, an ech wollt et wierklech erausfannen.

Nodeems Dir dësen Artikel geschriwwen huet, schéngt d'Léisung vum Problem fir mech offensichtlech ze sinn, awer zum Zäitpunkt vun der Analyse war et net sou. Éierlech gesot, ech hunn Google gemaach an hunn keng ähnlech Situatiounen fonnt.

Resultat: Ech hunn de Problem geléist, ech verstinn ëmmer nach net de Grond =(

Wann iergendeen weess, roden, eng Visioun iwwer déi méiglech Ursaache vun dësem Problem hat, wäert ech extrem frou sinn vun Iech an de Kommentaren ze héieren!

Source: will.com

Setzt e Commentaire