2 min read

Docker CLI základy: image vs container bez chaosu

Rýchle pochopenie rozdielu medzi image a container, aby ďalšie články dávali zmysel.

Ak chceš Docker používať bez frustrácie, potrebuješ mať jasno v jednej veci: image je šablóna, container je bežiaca inštancia tejto šablóny. Keď tomu rozumieš, príkazy run, ps, logs, exec prestanú pôsobiť chaoticky.

Čo je image a čo je container

  • Image: read-only balík (aplikácia, runtime, knižnice, konfigurácia).
  • Container: izolovaný proces vytvorený z image.
  • Z jedného image môžeš spustiť viac kontajnerov.

Mentálny model:

  1. vyberieš image
  2. spustíš container
  3. overíš stav
  4. sleduješ logy
  5. vypneš alebo zmažeš container

Základný workflow v CLI

BASH
docker pull nginx:alpine
docker images
docker run --name web-1 -d -p 8080:80 nginx:alpine
docker ps

Over v prehliadači http://localhost:8080, že kontajner beží.

Rozdiel medzi stop, start, rm

BASH
docker stop web-1
docker start web-1
docker rm -f web-1
  • stop kontajner iba zastaví.
  • start použije rovnaký kontajner znova.
  • rm kontajner odstráni (ak tam boli neperzistentné dáta, stratíš ich).

Inšpekcia a diagnostika

BASH
docker ps -a
docker logs web-1
docker inspect web-1
  • ps -a ukáže aj ukončené kontajnery.
  • logs je prvé miesto pri hľadaní chyby.
  • inspect ukáže porty, mounty, env premenné a sieť.

Najčastejšie chyby začiatočníkov

  • Mýlenie si image a container pri čistení (rmi vs rm).
  • Spúšťanie nového kontajnera stále s rovnakým menom bez odstránenia starého.
  • Očakávanie, že dáta v kontajneri prežijú jeho zmazanie.

Mini úloha

  1. Spusť dva kontajnery z nginx:alpine na portoch 8081 a 8082.
  2. Over ich stav cez docker ps.
  3. Jeden zastav, druhý odstráň.

Overenie v praxi

  • Spusť docker compose ps a over, že všetky potrebné služby sú Up.
  • Skontroluj logy cez docker compose logs --tail=100 a hľadaj chyby pri štarte.
  • Over prístupnosť služby cez jej reálny endpoint (HTTP, DB port, healthcheck).

Čo bude ďalej

V ďalšom článku pôjdeme hlbšie do portov, logov a troubleshootingu, aby si vedel rýchlo nájsť príčinu, keď kontajner neodpovedá.

Previous articleNuxt / Vue: kde začať a ako vybrať architektúruNext articleŠtruktúra projektu a HTTP lifecycle v Laraveli
Back to article list