Kako otkloniti pogreške u Docker spremnicima na Debianu 13 | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Kako otkloniti pogreške u Docker spremnicima na Debianu 13

Uvod

U ovom vodiču naučit ćete kako otkloniti pogreške u Docker kontejnerima koristeći praktične, početnicima prilagođene tehnike. Identificirate probleme provjerom statusa kontejnera, analizom logova, pregledom konfiguracije i pristupom okruženju kontejnera. Ovaj pristup pomaže vam brzo razumjeti zašto kontejner ne uspijeva i kako ga popraviti.

Krajnji cilj: Do kraja ovog vodiča, moći ćete identificirati i riješiti uobičajene probleme s Docker kontejnerima koristeći logove, inspekciju i alate za analizu u vrijeme izvođenja.

Preduvjeti

  • Ciljana publika: Početnici sistem administratori
  • Procijenjeno vrijeme: ~30 minuta
  • Operativni sustav: Debian 13
  • Softver: Docker 24.0 ili noviji
  • Dozvole: Korisnik s sudo privilegijama ili članstvo u docker grupi
  • Hardverski zahtjevi: Najmanje 2 GB RAM-a i 10 GB slobodnog prostora na disku
  • Mrežni zahtjevi: Pristup internetu za preuzimanje slika, nisu potrebni specifični portovi za ovaj vodič
  • Zahtjevi: Osnovno korištenje komandne linije i pokrenuta Docker usluga
  • Kompatibilnost: Testirano na Debian 13 i radi na Debian 12 i Ubuntu 22.04

Korak 1: Provjerite informacije o Docker sustavu

Prije otklanjanja pogrešaka u specifičnom kontejneru, provjerite radi li Docker ispravno.
Pokrenite sljedeću naredbu:

docker system info

Vidjet ćete detaljne informacije o Docker okruženju, uključujući:

  • Verziju servera
  • Upravljački program za pohranu
  • Broj kontejnera i slika
  • Dostupnost CPU-a i memorije
  • Root direktorij Dockera

Ovo vam pomaže potvrditi da:

  • Docker radi ispravno
  • Sustav ima dovoljno resursa
  • Nema globalnih problema s konfiguracijom

Info

Ako Docker ne radi, možete vidjeti grešku poput "Cannot connect to the Docker daemon".

Za provjeru statusa Docker usluge:

systemctl status docker

Vidjet ćete je li Docker usluga aktivna. Ako ne radi, pokrenite je:

sudo systemctl start docker

Sada biste trebali vidjeti uslugu u aktivnom stanju.

Tip

Uvijek provjerite zdravlje Dockera prije otklanjanja pogrešaka u kontejnerima. Mnogi problemi s kontejnerima uzrokovani su Docker uslugom ili problemima na razini sustava.

Korak 2: Provjerite status kontejnera

Pokrenite sljedeću naredbu:

docker ps

Vidjet ćete popis pokrenutih kontejnera s detaljima kao što su ID kontejnera, slika i status. Ako se vaš kontejner pojavljuje sa statusom "Up", trenutno je pokrenut.

Za uključivanje zaustavljenih kontejnera:

docker ps -a

Sada vidite sve kontejnere. Ako vaš kontejner pokazuje "Exited", to znači da je zaustavljen zbog greške ili završene izvršavanja.

Info

Kontejner se zaustavlja kada njegov glavni proces izađe. Ovo je normalno ponašanje, ali često ukazuje na problem ako izađe neočekivano.

Korak 3: Pregledajte logove kontejnera

Logovi pokazuju što aplikacija unutar kontejnera ispisuje. Ovo je najvažniji korak za otklanjanje pogrešaka. Možete dobiti <CONTAINER_ID> putem naredbe docker ps opisane u koraku 2.

Pokrenite:

docker logs <CONTAINER_ID>

Vidjet ćete izlaz aplikacije, uključujući greške i upozorenja. Potražite poruke koje ukazuju na neuspjehe kao što su nedostajuće datoteke ili greške u vezi.

Za praćenje logova u stvarnom vremenu:

docker logs -f <CONTAINER_ID>

Vidjet ćete nove unose logova kako se pojavljuju. Ovo je korisno kada ponovno pokrećete kontejner i promatrate ponašanje.

Za pregled samo nedavnih logova:

docker logs --tail 50 <CONTAINER_ID>

Vidjet ćete posljednjih 50 redaka izlaza. Ovo vam pomaže da se usredotočite na najnovije događaje.

Tip

Počnite s nedavnim logovima, a zatim pregledajte cijele logove ako je potrebno.

Korak 4: Pregledajte stanje kontejnera

Docker pohranjuje detaljne informacije o svakom kontejneru.

Pokrenite:

docker inspect <CONTAINER_ID>

Vidjet ćete strukturirani JSON izlaz s detaljima o konfiguraciji i izvođenju.

Za provjeru statusa kontejnera:

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

Vidjet ćete jednostavnu vrijednost kao što je "running" ili "exited", što potvrđuje stanje kontejnera.

Za provjeru izlaznog koda:

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

Vidjet ćete broj. Vrijednost 0 znači uspjeh, dok bilo koja vrijednost različita od nule ukazuje na grešku.

Za provjeru politike ponovnog pokretanja:

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

Vidjet ćete je li kontejner konfiguriran za automatsko ponovno pokretanje.

Info

Izlazni kodovi pomažu vam razumjeti zašto je kontejner zaustavljen. Kada kontejner izađe, glavni proces unutar njega vraća numerički kod sustavu.

Uobičajeni izlazni kodovi koje možete vidjeti:

  • 0 – Proces je uspješno završen bez grešaka. Ovo obično znači da je kontejner normalno zaustavljen. Na primjer, skripta je završila svoj zadatak i izašla.
  • 1 – Došlo je do opće greške. Ovo je najčešći kod neuspjeha i obično znači da je nešto unutar aplikacije neuspjelo, kao što je nedostajuća datoteka, nevažeća konfiguracija ili greška u izvođenju.
  • 125 – Docker nije uspio pokrenuti kontejner. Ovo obično ukazuje na problem s docker run naredbom, kao što su nevažeće opcije ili netočni parametri.
  • 126 – Naredba unutar kontejnera ne može se izvršiti. Ovo često znači probleme s dozvolama ili da datoteka nije izvršna.
  • 127 – Naredba nije pronađena. Ovo obično znači da specificirani binarni ili skripta ne postoji unutar kontejnera.
  • 137 – Kontejner je prisilno zaustavljen. Ovo se često događa kada sustav ostane bez memorije i ubije proces kontejnera.
  • 139 – Kontejner se srušio s greškom segmentacije. Ovo ukazuje na ozbiljnu grešku aplikacije, često povezanu s problemima pristupa memoriji.
  • 143 – Kontejner je zaustavljen na uredan način. Ovo se obično događa kada pokrenete docker stop i kontejner se ispravno isključi.

Tip

Prvo se usredotočite na kodove 1, 127 i 137, jer su najčešći tijekom otklanjanja pogrešaka. Uvijek kombinirajte izlazni kod s docker logovima kako biste razumjeli točan uzrok neuspjeha.

Korak 5: Pristupite okruženju kontejnera

Ponekad logovi nisu dovoljni. Možete ući u kontejner kako biste ga izravno pregledali.

Pokrenite:

docker exec -it <CONTAINER_ID> /bin/bash

Ulazite u interaktivnu ljusku unutar kontejnera.

Ako bash nije dostupan:

docker exec -it <CONTAINER_ID> /bin/sh

Sada možete istraživati kontejner.

Provjerite procese pokrenutog kontejnera s hosta:

docker top <CONTAINER_ID>

Vidjet ćete aktivne procese unutar kontejnera. Ako glavni proces nedostaje, kontejner se može zaustaviti.

Tip

Provjerite konfiguracijske datoteke i testirajte naredbe ručno unutar kontejnera.

Korak 6: Pratite korištenje resursa

Kontejneri mogu ne uspjeti zbog ograničenih resursa.

Pokrenite:

docker stats

Vidjet ćete stvarno vrijeme korištenja CPU-a, memorije i mreže za sve kontejnere.

Za praćenje specifičnog kontejnera:

docker stats <CONTAINER_ID>

Vidjet ćete živu tablicu koja se kontinuirano ažurira s korištenjem resursa za sve pokrenute kontejnere. Svaki red predstavlja kontejner, a svaki stupac prikazuje specifičnu vrstu korištenja resursa.
Najvažniji stupci su:

  • CPU % – Prikazuje koliko CPU-a kontejner koristi. Visoke vrijednosti mogu ukazivati na intenzivnu obradu ili neučinkovit kod.
  • MEM USAGE / LIMIT – Prikazuje koliko memorije kontejner koristi u usporedbi s njegovim ograničenjem. Ako je korištenje blizu ograničenja, kontejner se može usporiti ili biti zaustavljen.
  • MEM % – Postotak korištene memorije u odnosu na ograničenje.
  • NET I/O – Mrežni promet. Ovo pokazuje koliko je podataka kontejner primio i poslao. Visoke vrijednosti mogu ukazivati na intenzivnu mrežnu aktivnost.
  • BLOCK I/O – Aktivnost čitanja i pisanja na disku. Ovaj stupac pokazuje koliko je podataka kontejner pročitao s diska i zapisao na disk.
  • PIDs – Broj procesa koji se izvode unutar kontejnera. Vrlo visok broj može ukazivati na curenje procesa ili nekontroliranu aplikaciju.

Info

Ako BLOCK I/O stalno raste, kontejner aktivno koristi pohranu. Ovo je normalno za baze podataka, ali neočekivani skokovi mogu ukazivati na neučinkovito korištenje diska ili pretjerano logiranje. Prilikom otklanjanja pogrešaka, potražite neobične skokove u CPU-u, memoriji ili BLOCK I/O. Kombinirajte ove informacije s docker logovima kako biste razumjeli što kontejner radi u tom trenutku.

Korak 7: Provjerite Docker događaje

Docker bilježi događaje koji opisuju što se događa na razini sustava i kontejnera. Ovi događaji pomažu vam razumjeti kada kontejner počinje, zaustavlja se, ruši ili ponovno pokreće.
Pokrenite sljedeću naredbu:

docker events

Vidjet ćete prijenos događaja uživo kao što su pokretanje, zaustavljanje i ponovno pokretanje kontejnera. Izlaz se kontinuirano ažurira u stvarnom vremenu.

Info

Pritisnite Ctrl + C za zaustavljanje prijenosa uživo.

Filtrirajte događaje za specifičan kontejner

Pokrenite:

docker events --filter container=<CONTAINER_ID>

Vidjet ćete samo događaje vezane uz odabrani kontejner. Ovo vam pomaže da se usredotočite na jedan radni zadatak.

Prikažite događaje iz specifičnog vremenskog raspona

Za pregled događaja iz specifične točke u vremenu:

docker events --since 10m

Vidjet ćete događaje iz posljednjih 10 minuta.

Za definiranje početnog i završnog vremena:

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

Vidjet ćete događaje koji su se dogodili unutar tog vremenskog raspona.

Info

Možete koristiti relativno vrijeme kao 10m, 1h, ili pune vremenske oznake.

Formatirajte izlaz događaja

Pokrenite:

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

Vidjet ćete formatirani izlaz s odabranim poljima. Ovo olakšava čitanje ili integraciju sa skriptama.

Tip

Koristite formatiranje kako biste istaknuli samo informacije koje su vam potrebne tijekom otklanjanja pogrešaka.

Filtrirajte specifične vrste događaja

Možete filtrirati događaje kako biste se usredotočili na specifične probleme.

Zaustavljanje ili rušenje kontejnera

Pokrenite:

docker events --filter event=die

Vidjet ćete događaje kada se kontejneri zaustave. Ovo pomaže identificirati neočekivana isključenja.

Događaji izvan memorije

Pokrenite:

docker events --filter event=oom

Vidjet ćete događaje kada je kontejner ubijen zbog ograničenja memorije. Ovo je ključno za dijagnosticiranje problema s resursima.

Info

OOM znači Out Of Memory. Sustav zaustavlja kontejner kada premaši dostupnu memoriju.

Ponovno pokretanje kontejnera

Pokrenite:

docker events --filter event=restart

Vidjet ćete kada se kontejneri ponovno pokreću. Česti događaji ponovnog pokretanja mogu ukazivati na petlju rušenja.

Kombinirajte filtre i vremenski raspon

Pokrenite:

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

Vidjet ćete događaje zaustavljanja kontejnera iz posljednjih 10 minuta. Ovo pomaže suziti nedavne neuspjehe.

Tip

Kombinirajte filtre i vremenske raspone kako biste brzo identificirali obrasce kao što su ponovljena rušenja ili problemi s memorijom.

Korak 8: Provjerite korištenje diska i očistite neiskorištene slike

Docker pohranjuje slike, kontejnere, volumene i predmemoriju na disku. S vremenom, neiskorišteni podaci mogu zauzeti značajan prostor i uzrokovati probleme.

Pokrenite sljedeću naredbu:

docker system df

Vidjet ćete sažetak korištenja diska, uključujući:

  • Slike
  • Kontejnere
  • Lokalne volumene
  • Predmemoriju izgradnje

Svaki odjeljak prikazuje:

  • Ukupan broj
  • Aktivne stavke
  • Veličinu
  • Prostor koji se može povratiti

Ovo vam pomaže razumjeti koliko prostora na disku Docker koristi i koliko se može očistiti.

Info

Stupac "Reclaimable" pokazuje koliko prostora se može osloboditi uklanjanjem neiskorištenih resursa.

Za pregled neiskorištenih slika pokrenite:

docker images -f dangling=true

Vidjet ćete slike koje nisu označene i koje ne koristi nijedan kontejner. Ovo su sigurni kandidati za uklanjanje.

Za uklanjanje neiskorištenih slika pokrenite:

docker image prune

Bit ćete upitani za potvrdu. Nakon potvrde, neiskorištene slike se brišu i prostor na disku se oslobađa.

Za uklanjanje svih neiskorištenih slika, ne samo onih koje vise:

docker image prune -a

Uklanjate sve slike koje ne koristi nijedan kontejner.

Info

Važno: Ova naredba uklanja slike koje mogu biti potrebne kasnije. Osigurajte da nijedan potreban kontejner ne ovisi o njima.

Tip

Redovito čišćenje pomaže spriječiti probleme s prostorom na disku koji mogu uzrokovati neuspjeh kontejnera ili nepredvidivo ponašanje.

Verifikacija i testiranje

  • Pokrenite docker ps i potvrdite da je status kontejnera ispravan.
  • Pokrenite docker logs i provjerite jesu li greške identificirane ili riješene.
  • Pokrenite docker inspect i potvrdite da status i izlazni kod odgovaraju očekivanjima.
  • Koristite docker exec kako biste potvrdili da procesi rade unutar kontejnera.
  • Ako je otklanjanje pogrešaka uspješno, kontejner bi trebao ostati u pokrenutom stanju bez kritičnih grešaka u logovima.

Vraćanje promjena

Ako ste napravili promjene tijekom otklanjanja pogrešaka, možete vratiti čisto stanje.

Tip

Izradite sigurnosnu kopiju važnih podataka prije uklanjanja kontejnera.

Zaustavite kontejner:

docker stop <CONTAINER_ID>

Vidjet ćete potvrdu da je kontejner zaustavljen.

Uklonite kontejner:

docker rm <CONTAINER_ID>

Vidjet ćete potvrdu da je kontejner uklonjen.

Ponovno stvorite kontejner:

docker run <OPTIONS> <IMAGE_NAME>

Novi kontejner je stvoren iz slike.

Info

Važno: Uklanjanje kontejnera briše njegovo stanje izvođenja. Podaci se gube osim ako nisu pohranjeni u volumenima.

Otklanjanje pogrešaka

Kontejner se odmah isključuje

Provjerite docker logs za poruke o greškama. One obično objašnjavaju problem.

Ne možete pristupiti kontejneru

Osigurajte da je pokrenut koristeći docker ps.

Nema dostupnih logova

Osigurajte da aplikacija ispisuje izlaz na stdout ili stderr.

Kontejner se stalno ponovno pokreće

Provjerite politiku ponovnog pokretanja i logove kako biste identificirali petlje rušenja.

Visoka potrošnja resursa

Koristite docker stats za potvrdu skokova u CPU-u ili memoriji.

Zaključak

Naučili ste kako otkloniti pogreške u Docker kontejnerima provjerom njihovog statusa, analizom logova, pregledom konfiguracije i pristupom okruženju kontejnera. Ove tehnike omogućuju vam brzo identificiranje i rješavanje uobičajenih problema. Kao sljedeći korak, istražite otklanjanje pogrešaka u Docker Compose-u i centralizirane sustave za logiranje za upravljanje višestrukim kontejnerima.

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