Kako odpravljati napake v Docker vsebnikih na Debian 13 | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Kako odpravljati napake v Docker vsebnikih na Debian 13

Uvod

V tem vodiču se boste naučili, kako odpravljati napake v Docker kontejnerjih z uporabo praktičnih, začetnikom prijaznih tehnik. Težave boste prepoznali s preverjanjem statusa kontejnerja, analizo dnevnikov, pregledom konfiguracije in dostopom do okolja kontejnerja. Ta pristop vam pomaga hitro razumeti, zakaj kontejner ne deluje in kako ga popraviti.

Končni cilj: Do konca tega vodiča boste lahko prepoznali in odpravili pogoste težave Docker kontejnerjev z uporabo dnevnikov, pregledov in orodij za analizo med izvajanjem.

Predpogoji

  • Ciljna publika: Začetniki sistemski administratorji
  • Ocenjeni čas: ~30 minut
  • Operacijski sistem: Debian 13
  • Programska oprema: Docker 24.0 ali novejši
  • Dovoljenja: Uporabnik s sudo privilegiji ali članstvo v docker skupini
  • Strojne zahteve: Vsaj 2 GB RAM in 10 GB prostega prostora na disku
  • Mrežne zahteve: Dostop do interneta za prenos slik, za ta vodič niso potrebna posebna vrata
  • Zahteve: Osnovna uporaba ukazne vrstice in delujoča Docker storitev
  • Združljivost: Testirano na Debian 13 in deluje na Debian 12 in Ubuntu 22.04

Korak 1: Preverite informacije o Docker sistemu

Pred odpravljanjem napak v določenem kontejnerju preverite, ali Docker sam deluje pravilno.
Zaženite naslednji ukaz:

docker system info

Videli boste podrobne informacije o Docker okolju, vključno z:

  • Različica strežnika
  • Pogon za shranjevanje
  • Število kontejnerjev in slik
  • Razpoložljivost CPU in pomnilnika
  • Koreninski imenik Dockerja

To vam pomaga potrditi, da:

  • Docker deluje pravilno
  • Sistem ima dovolj virov
  • Ni globalnih težav s konfiguracijo

Info

Če Docker ne deluje, lahko vidite napako, kot je "Cannot connect to the Docker daemon".

Za preverjanje statusa Docker storitve:

systemctl status docker

Videli boste, ali je Docker storitev aktivna. Če ne deluje, jo zaženite:

sudo systemctl start docker

Zdaj bi morali videti storitev v aktivnem stanju.

Tip

Vedno preverite zdravje Dockerja pred odpravljanjem napak v kontejnerjih. Veliko težav s kontejnerji povzroča Docker storitev ali težave na sistemski ravni.

Korak 2: Preverite status kontejnerja

Zaženite naslednji ukaz:

docker ps

Videli boste seznam tekočih kontejnerjev s podrobnostmi, kot so ID kontejnerja, slika in status. Če se vaš kontejner prikaže s statusom "Up", trenutno deluje.

Za vključitev ustavljenih kontejnerjev:

docker ps -a

Zdaj vidite vse kontejnerje. Če vaš kontejner prikazuje "Exited", pomeni, da se je ustavil zaradi napake ali dokončal izvajanje.

Info

Kontejner se ustavi, ko se njegov glavni proces konča. To je normalno vedenje, vendar pogosto pomeni težavo, če se nepričakovano konča.

Korak 3: Oglejte si dnevnike kontejnerja

Dnevniki prikazujejo, kaj aplikacija znotraj kontejnerja izpiše. To je najpomembnejši korak za odpravljanje napak. <CONTAINER_ID> lahko dobite z ukazom docker ps, opisanim v koraku 2.

Zaženite:

docker logs <CONTAINER_ID>

Videli boste izpis aplikacije, vključno z napakami in opozorili. Poiščite sporočila, ki nakazujejo na napake, kot so manjkajoče datoteke ali napake pri povezovanju.

Za sledenje dnevnikom v realnem času:

docker logs -f <CONTAINER_ID>

Videli boste nove vnose v dnevnik, ko se pojavijo. To je uporabno pri ponovnem zagonu kontejnerja in opazovanju vedenja.

Za ogled samo nedavnih dnevnikov:

docker logs --tail 50 <CONTAINER_ID>

Videli boste zadnjih 50 vrstic izpisa. To vam pomaga osredotočiti se na najnovejše dogodke.

Tip

Začnite z nedavnimi dnevniki, nato po potrebi preglejte celotne dnevnike.

Korak 4: Preglejte stanje kontejnerja

Docker shranjuje podrobne informacije o vsakem kontejnerju.

Zaženite:

docker inspect <CONTAINER_ID>

Videli boste strukturiran JSON izpis s podrobnostmi o konfiguraciji in izvajanju.

Za preverjanje statusa kontejnerja:

docker inspect -f '{{.State.Status}}' <CONTAINER_ID>

Videli boste preprosto vrednost, kot je "running" ali "exited", kar potrjuje stanje kontejnerja.

Za preverjanje izhodne kode:

docker inspect -f '{{.State.ExitCode}}' <CONTAINER_ID>

Videli boste številko. Vrednost 0 pomeni uspeh, medtem ko katera koli nenulta vrednost pomeni napako.

Za preverjanje politike ponovnega zagona:

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' <CONTAINER_ID>

Videli boste, ali je kontejner nastavljen za samodejni ponovni zagon.

Info

Izhodne kode vam pomagajo razumeti, zakaj se je kontejner ustavil. Ko se kontejner konča, glavni proces znotraj njega vrne številčno kodo sistemu.

Pogoste izhodne kode, ki jih lahko vidite:

  • 0 – Proces se je uspešno zaključil brez napak. To običajno pomeni, da se je kontejner normalno ustavil. Na primer, skripta je dokončala svojo nalogo in se končala.
  • 1 – Prišlo je do splošne napake. To je najpogostejša koda napake in običajno pomeni, da je nekaj znotraj aplikacije spodletelo, kot je manjkajoča datoteka, neveljavna konfiguracija ali napaka med izvajanjem.
  • 125 – Dockerju ni uspelo zagnati kontejnerja. To običajno pomeni težavo z ukazom docker run, kot so neveljavne možnosti ali napačni parametri.
  • 126 – Ukaza znotraj kontejnerja ni mogoče izvesti. To pogosto pomeni težave s pravicami ali da datoteka ni izvedljiva.
  • 127 – Ukaz ni bil najden. To običajno pomeni, da določeni binarni program ali skripta ne obstaja znotraj kontejnerja.
  • 137 – Kontejner je bil prisilno ustavljen. To se pogosto zgodi, ko sistemu zmanjka pomnilnika in ubije proces kontejnerja.
  • 139 – Kontejner se je zrušil z napako segmentacije. To pomeni resno napako aplikacije, pogosto povezano s težavami pri dostopu do pomnilnika.
  • 143 – Kontejner je bil ustavljen na urejen način. To se običajno zgodi, ko zaženete docker stop in se kontejner pravilno ustavi.

Tip

Najprej se osredotočite na kode 1, 127 in 137, saj so najpogostejše med odpravljanjem napak. Vedno kombinirajte izhodno kodo z docker logs, da razumete točen vzrok napake.

Korak 5: Dostop do okolja kontejnerja

Včasih dnevniki niso dovolj. V kontejner lahko vstopite, da ga neposredno pregledate.

Zaženite:

docker exec -it <CONTAINER_ID> /bin/bash

Vstopili boste v interaktivno lupino znotraj kontejnerja.

Če bash ni na voljo:

docker exec -it <CONTAINER_ID> /bin/sh

Zdaj lahko raziskujete kontejner.

Preverite tekoče procese kontejnerja iz gostitelja:

docker top <CONTAINER_ID>

Videli boste aktivne procese znotraj kontejnerja. Če glavni proces manjka, se lahko kontejner ustavi.

Tip

Preverite konfiguracijske datoteke in ročno preizkusite ukaze znotraj kontejnerja.

Korak 6: Spremljajte porabo virov

Kontejnerji lahko odpovejo zaradi omejenih virov.

Zaženite:

docker stats

Videli boste porabo CPU, pomnilnika in omrežja v realnem času za vse kontejnerje.

Za spremljanje določenega kontejnerja:

docker stats <CONTAINER_ID>

Videli boste živo tabelo, ki se nenehno posodablja s porabo virov za vse tekoče kontejnerje. Vsaka vrstica predstavlja kontejner, vsak stolpec pa prikazuje določeno vrsto porabe virov.
Najpomembnejši stolpci so:

  • CPU % – Prikazuje, koliko CPU kontejner uporablja. Visoke vrednosti lahko kažejo na intenzivno obdelavo ali neučinkovito kodo.
  • MEM USAGE / LIMIT – Prikazuje, koliko pomnilnika kontejner uporablja v primerjavi z njegovo omejitvijo. Če je poraba blizu omejitve, se lahko kontejner upočasni ali ustavi.
  • MEM % – Odstotek uporabljenega pomnilnika glede na omejitev.
  • NET I/O – Omrežni promet. To prikazuje, koliko podatkov je kontejner prejel in poslal. Visoke vrednosti lahko kažejo na intenzivno omrežno aktivnost.
  • BLOCK I/O – Aktivnost branja in pisanja na disk. Ta stolpec prikazuje, koliko podatkov je kontejner prebral z diska in zapisal nanj.
  • PIDs – Število procesov, ki tečejo znotraj kontejnerja. Zelo visoko število lahko kaže na uhajanje procesov ali nenadzorovano aplikacijo.

Info

Če se BLOCK I/O nenehno povečuje, kontejner aktivno uporablja shranjevanje. To je normalno za baze podatkov, vendar nepričakovani skoki lahko kažejo na neučinkovito uporabo diska ali pretirano beleženje. Pri odpravljanju napak poiščite nenavadne skoke v CPU, pomnilniku ali BLOCK I/O. To informacijo kombinirajte z docker logs, da razumete, kaj kontejner počne v tistem trenutku.

Korak 7: Preverite Docker dogodke

Docker beleži dogodke, ki opisujejo, kaj se dogaja na sistemski in kontejnerski ravni. Ti dogodki vam pomagajo razumeti, kdaj se kontejner zažene, ustavi, zruši ali ponovno zažene.
Zaženite naslednji ukaz:

docker events

Videli boste tok dogodkov v živo, kot so zagon, ustavitev in ponovni zagon kontejnerja. Izpis se nenehno posodablja v realnem času.

Info

Pritisnite Ctrl + C, da ustavite tok v živo.

Filtrirajte dogodke za določen kontejner

Zaženite:

docker events --filter container=<CONTAINER_ID>

Videli boste samo dogodke, povezane z izbranim kontejnerjem. To vam pomaga osredotočiti se na eno delovno obremenitev.

Prikažite dogodke iz določenega časovnega obdobja

Za ogled dogodkov iz določenega trenutka:

docker events --since 10m

Videli boste dogodke iz zadnjih 10 minut.

Za določitev začetnega in končnega časa:

docker events --since 2026-01-01T10:00:00 --until 2026-01-01T11:00:00

Videli boste dogodke, ki so se zgodili v tem časovnem obdobju.

Info

Uporabite lahko relativni čas, kot so 10m, 1h, ali polne časovne žige.

Oblikujte izpis dogodkov

Zaženite:

docker events --format '{{.Time}} {{.Type}} {{.Action}} {{.Actor.ID}}'

Videli boste oblikovan izpis z izbranimi polji. To olajša branje ali integracijo s skripti.

Tip

Uporabite oblikovanje, da poudarite samo informacije, ki jih potrebujete med odpravljanjem napak.

Filtrirajte določene vrste dogodkov

Dogodke lahko filtrirate, da se osredotočite na določene težave.

Ustavitev ali zrušitev kontejnerja

Zaženite:

docker events --filter event=die

Videli boste dogodke, ko se kontejnerji ustavijo. To pomaga prepoznati nepričakovane zaustavitve.

Dogodki pomanjkanja pomnilnika

Zaženite:

docker events --filter event=oom

Videli boste dogodke, ko je kontejner ustavljen zaradi omejitev pomnilnika. To je ključno za diagnosticiranje težav z viri.

Info

OOM pomeni Out Of Memory. Sistem ustavi kontejner, ko preseže razpoložljiv pomnilnik.

Ponovni zagon kontejnerja

Zaženite:

docker events --filter event=restart

Videli boste, kdaj se kontejnerji ponovno zaženejo. Pogosti dogodki ponovnega zagona lahko kažejo na zanko zrušitve.

Kombinirajte filtre in časovno obdobje

Zaženite:

docker events --since 10m --filter event=die

Videli boste dogodke ustavitve kontejnerja iz zadnjih 10 minut. To pomaga zožiti nedavne napake.

Tip

Kombinirajte filtre in časovna obdobja, da hitro prepoznate vzorce, kot so ponavljajoče se zrušitve ali težave s pomnilnikom.

Korak 8: Preverite uporabo diska in očistite neuporabljene slike

Docker shranjuje slike, kontejnerje, volumne in predpomnilnik na disku. Sčasoma lahko neuporabljeni podatki porabijo veliko prostora in povzročijo težave.

Zaženite naslednji ukaz:

docker system df

Videli boste povzetek uporabe diska, vključno z:

  • Slike
  • Kontejnerji
  • Lokalni volumni
  • Predpomnilnik gradnje

Vsak odsek prikazuje:

  • Skupno število
  • Aktivne postavke
  • Velikost
  • Prostor, ki ga je mogoče povrniti

To vam pomaga razumeti, koliko prostora na disku uporablja Docker in koliko ga je mogoče očistiti.

Info

Stolpec "Reclaimable" prikazuje, koliko prostora je mogoče sprostiti z odstranitvijo neuporabljenih virov.

Za ogled neuporabljenih slik zaženite:

docker images -f dangling=true

Videli boste slike, ki niso označene in jih ne uporablja noben kontejner. Te so varni kandidati za odstranitev.

Za odstranitev neuporabljenih slik zaženite:

docker image prune

Vprašani boste za potrditev. Po potrditvi se neuporabljene slike izbrišejo in prostor na disku se sprosti.

Za odstranitev vseh neuporabljenih slik, ne samo visečih:

docker image prune -a

Odstranili boste vse slike, ki jih ne uporablja noben kontejner.

Info

Pomembno: Ta ukaz odstrani slike, ki jih boste morda potrebovali kasneje. Prepričajte se, da noben potreben kontejner ne temelji na njih.

Tip

Redno čiščenje pomaga preprečiti težave s prostorom na disku, ki lahko povzročijo, da kontejnerji odpovejo ali se obnašajo nepredvidljivo.

Preverjanje in testiranje

  • Zaženite docker ps in potrdite, da je status kontejnerja pravilen.
  • Zaženite docker logs in preverite, ali so napake prepoznane ali odpravljene.
  • Zaženite docker inspect in potrdite, da status in izhodna koda ustrezata pričakovanjem.
  • Uporabite docker exec za potrditev, da procesi tečejo znotraj kontejnerja.
  • Če je odpravljanje napak uspešno, bi moral kontejner ostati v stanju izvajanja brez kritičnih napak v dnevnikih.

Vračanje sprememb

Če ste med odpravljanjem napak naredili spremembe, lahko obnovite čisto stanje.

Tip

Pred odstranitvijo kontejnerjev varnostno kopirajte pomembne podatke.

Ustavite kontejner:

docker stop <CONTAINER_ID>

Videli boste potrditev, da je kontejner ustavljen.

Odstranite kontejner:

docker rm <CONTAINER_ID>

Videli boste potrditev, da je kontejner odstranjen.

Ponovno ustvarite kontejner:

docker run <OPTIONS> <IMAGE_NAME>

Ustvarjen je nov kontejner iz slike.

Info

Pomembno: Odstranitev kontejnerja izbriše njegovo stanje izvajanja. Podatki so izgubljeni, razen če so shranjeni v volumnih.

Odpravljanje težav

Kontejner se takoj izklopi

Preverite docker logs za sporočila o napakah. Ta običajno pojasnijo težavo.

Ne morem dostopati do kontejnerja

Prepričajte se, da teče z uporabo docker ps.

Dnevniki niso na voljo

Prepričajte se, da aplikacija izpisuje izhod na stdout ali stderr.

Kontejner se nenehno ponovno zažene

Preverite politiko ponovnega zagona in dnevnike, da prepoznate zanke zrušitve.

Visoka poraba virov

Uporabite docker stats za potrditev skokov CPU ali pomnilnika.

Zaključek

Naučili ste se, kako odpravljati napake v Docker kontejnerjih s preverjanjem njihovega statusa, analizo dnevnikov, pregledom konfiguracije in dostopom do okolja kontejnerja. Te tehnike vam omogočajo hitro prepoznavanje in reševanje pogostih težav. Kot naslednji korak raziščite odpravljanje napak v Docker Compose in centralizirane sisteme beleženja za upravljanje več kontejnerjev.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA