Puncte:8

Eroare de actualizare Docker: driverul de stocare aufs nu mai este acceptat

drapel tr

Am o mașină Ubuntu cu Docker instalat.(Versiunea Ubuntu este 20.04, dar acest lucru afectează și 18.04, și posibil și versiunile non-LTS.) Actualizarea versiunii docker.io pachet la versiunea curentă de la focal-securitate eșuează:

Se pregătește despachetarea .../docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb...
Driverul de stocare aufs nu mai este acceptat.
Vă rugăm să vă asigurați că niciunul dintre containerele dvs
folosind driverul de stocare aufs, eliminați directorul
/var/lib/docker/aufs și încercați din nou.
dpkg: eroare la procesarea arhivei /var/cache/apt/archives/docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb (--unpack):
 Noul subproces de script de preinstalare a pachetului docker.io a returnat starea de ieșire de eroare 1
dpkg: eroare la curățare:
 instalat pachetul docker.io subprocesul de script post-instalare a returnat eroare starea de ieșire 1

Acesta este un bug cunoscut, dar eroarea a fost marcată ca ânu se va rezolvaâ pe baza Politica de ambalare Ubuntu Docker.

Citând mai multe persoane aici:

Aceasta este o schimbare radicală pentru o actualizare care nu ar trebui să aibă loc pe o versiune LTS.

O actualizare care necesită atât de multă intervenție manuală ca aceasta nu ar trebui să se întâmple niciodată într-o versiune LTS.

Ai dreptate în privința asta în cazul general. Din păcate, Docker este o excepție. (â¦)

Așadar, ca o excepție pentru Docker, ne actualizăm la versiuni mai noi din amonte, fără să ne preocupăm de compatibilitatea inversă a comportamentului Docker în sine, bazându-ne în schimb pe deciziile din amonte. În acest caz și doar pe baza analizei prezentate deja de către alții aici, aceasta înseamnă că nu ne așteptăm să reparăm driverul de stocare aufs în ambalajul nostru. (â¦)

Urmând politica așa cum este ea, acest lucru nu este ceva pe care ne așteptăm să îl remediam și, prin urmare, marchez că această eroare nu se va remedia.

Consider că raționamentul este derutant – dacă folosesc o distribuție stabilă, mă aștept ca upgrade-urile să fie fără probleme și nu mă aștept să am cea mai recentă versiune a programelor. Dacă vreau o versiune rulantă, știu unde să o găsesc și nu se va numi LTS.Dar nu acesta este locul pentru această discuție.

Întrebarea mea aici este, ce să fac în continuare? Cum mă âasigur că niciunul dintre containerele [mei] nu utilizează driverul de stocare aufsâ? Păstrarea unei versiuni mai vechi, neîntreținută de Docker, este o problemă de început. Trebuie să am actualizări de securitate.

Niciunul dintre containerele mele nu utilizează funcții avansate care ar depinde de driverul de stocare. Sunt perfect mulțumit de actualizarea sau migrarea containerelor mele. Cum să fac asta?

Artur Meinild avatar
drapel vn
Ce zici de instalarea Docker din [repos-urile oficiale](https://docs.docker.com/engine/install/ubuntu/) în loc de versiunea Canonicals (docker.io)? Fac asta și rulez cea mai recentă versiune fără probleme.
Gilles 'SO- stop being evil' avatar
drapel tr
@ArturMeinild Problema nu rulează cea mai recentă versiune, este actualizarea versiunii pe care o am în prezent.
Artur Meinild avatar
drapel vn
Care este conținutul lui `/var/lib/docker/aufs`?
Gilles 'SO- stop being evil' avatar
drapel tr
@ArturMeinild `diff` care conține directoare ale căror nume sunt 64 de cifre hexadecimale (unele cu un sufix `-init`) și al căror conținut este, din câte îmi dau seama, fișiere modificate din imaginea de bază. `straturi` care conțin fișiere cu nume similare al căror conținut este fișiere text cu 64 de cifre hexadecimale pe linie. `mnt` cu directoare goale.
Gilles 'SO- stop being evil' avatar
drapel tr
@ArturMeinild Această pagină nu-mi este deloc utilă. Acesta explică cum funcționează driverele de stocare, dar nu-mi pasă de asta. Trebuie să-mi actualizez sistemul _existent_. Am containere care folosesc în prezent aufs. Cum le migrez în suprapuneri?
BjornW avatar
drapel cn
M-am lovit și de asta acum. Puteți ține docker.io la versiunea veche? Am o stație de lucru cu zeci de containere care nu sunt banale de reconstruit și nu pot pierde ore făcând asta nici din cauza unui upgrade LTS (!)... :/
Gilles 'SO- stop being evil' avatar
drapel tr
@BjornW Da, puteți păstra pachetul docker. Dar asta înseamnă că rămâneți cu orice vulnerabilități de securitate ar putea fi descoperite în acea versiune.
BjornW avatar
drapel cn
Da a reușit să o țină acum și să completeze actualizarea celorlalte pachete.. uneori, realitatea intervine și te obligă să amâni niște upgrade-uri drastice de genul acesta (că cel puțin IMO nu ar fi trebuit să fie forțat niciodată asupra oamenilor, în primul rând, fără un instrument de migrare, care se pare că ar fi fost posibil să se facă așa cum alții au postat scripturi care pot migra containerele). Mulțumesc pentru răspuns și bineînțeles că nu vă îndrept această dezgustă :)
Gilles 'SO- stop being evil' avatar
drapel tr
@BjornW Dacă ați găsit o modalitate de a migra automat containerele, vă rugăm să postați un răspuns aici!
BjornW avatar
drapel cn
@Gilles'SO-stopbeingevil' Mă întreb dacă funcționează: https://stackoverflow.com/questions/44745304/how-to-move-images-of-docker-in-aufs-directory-to-overlay2 folosind docker save / încărcare docker
Puncte:6
drapel vn

De la documentația oficială Docker - cum să configurați driverul de stocare pentru a fi utilizat OverlayFS în loc de AUFS.

  1. Opriți Docker.

    sudo systemctl stop docker
    
  2. Copiați conținutul lui /var/lib/docker într-o locație temporară.

    cp -au /var/lib/docker /var/lib/docker.bk
    
  3. Editați | × /etc/docker/daemon.json. Dacă nu există încă, creează-l. Presupunând că fișierul era gol, adăugați următorul conținut.

    {
       "storage-driver": "overlay2" 
    }
    

    Docker nu pornește dacă fișierul daemon.json conține JSON prost format.

  4. Porniți Docker.

    sudo systemctl start docker
    
  5. Verificați dacă demonul folosește driverul de stocare overlay2. Utilizați comanda docker info și căutați Driver de stocare și sistemul de fișiere de rezervă.

    $ info docker
    
    Recipiente: 0
    Imagini: 0
    Driver de stocare: overlay2
     Sistem de fișiere de rezervă: xfs
     Suporta d_type: true
     Native Overlay Diff: adevărat
    <<...>
    

Docker folosește acum suprapunere2 driver de stocare.

Apoi, trebuie să recreați containerele și să preluați toate imaginile din nou cu noul driver de stocare instalat. Datele mapate ale containerului în volume ar trebui să fie nemodificate.

După aceasta, puteți elimina directorul /var/lib/docker/aufs și continuați cu actualizarea pachetului Docker.

Gilles 'SO- stop being evil' avatar
drapel tr
Sunt confuz cu privire la âApoi trebuie să recreați containerele și să preluați din nou toate imaginile cu noul driver de stocare. Datele mapate ale containerului în volume ar trebui să fie nemodificate.â Nu știu ce înseamnă „datele containerului mapate în volume“. Ce se păstrează la acest pas? Mi se pare ciudat că aș re-descărca imaginile de bază, care nu sunt modificate de alegerea driverului de stocare, dar modificări locale ar fi, chiar dacă despre asta este driverul de stocare?
Artur Meinild avatar
drapel vn
Acum nu vă cunosc configurația completă Docker, dar sperăm că datele dvs. persistente sunt separate de datele Docker. Datele de rulare care utilizează driverul de stocare ar trebui să fie „doar” date temporare, tot ceea ce doriți să fie persistent ar trebui mapat în altă parte ca volume (nume sau căi directe). Presupun acest lucru, deoarece dacă nu este cazul, migrarea containerelor dvs. va fi foarte dificilă.
Artur Meinild avatar
drapel vn
Gândiți-vă la asta ca la crearea tuturor containerelor de la zero, dar cu datele persistente la locul lor.
drapel in
Driverul aufs a fost eliminat în întregime din upgrade-ul LTS docker.io? .. sau pot seta temporar backend-ul de stocare la „overlay2” și pot face upgrade și pur și simplu comuta înapoi?
drapel in
M-am uitat la mai multe ghiduri de backup/restaurare a imaginilor și de backup/restaurare a containerelor și absolut niciunul dintre ele nu explică cum să vă restaurați containerele așa cum erau, astfel încât să puteți continua de unde ați rămas.
Mave avatar
drapel id
@Brunis Ai găsit vreodată un răspuns? Tocmai mi-am pierdut toate imaginile și containerele :|
drapel in
@Mave am migrat totul în docker-compose.Mi-au luat câteva zile până am putut să-mi recreez containerele și imaginea pgsql a fost mapată corect la sistemul de fișiere în care se aflau fișierele mele db. Ce cosmar. Nu aștept din nou lansările LTS, ce glumă că nu există o cale de actualizare de la LTS -> LTS ..
Puncte:0
drapel in

Vă rugăm să rețineți că, dacă ar fi trebuit să mutați directorul de date într-o altă locație (adică: prin "rădăcină de date" opțiunea în daemon.json) trebuie să eliminați ambele directoare aufs, cel de sub noul rădăcină de date iar cel de sub /var/lib/docker înainte de a continua cu instalarea pachetului

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.