Podstawy Docker #1: Czym jest Docker i po co Ci to?

Zanim zainstalujesz Dockera i zaczniesz wpisywać komendy, musisz zrozumieć co to jest i dlaczego wszyscy tego używają. Ten artykuł to Twój punkt startowy — bez niego reszta serii nie będzie miała sensu.

Problem: „u mnie działa”

Wyobraź sobie sytuację: instalujesz n8n na swoim serwerze. Potrzebujesz Node.js w odpowiedniej wersji, kilku bibliotek systemowych, odpowiednich uprawnień. Wszystko działa. Potem chcesz przenieść to na inny serwer — i nagle nic nie działa, bo tam jest inna wersja Node.js, brakuje biblioteki, albo coś koliduje z inną aplikacją.

Docker rozwiązuje ten problem. Pakujesz aplikację razem ze wszystkim czego potrzebuje do jednego pudełka (kontenera) — i to pudełko działa identycznie na każdym serwerze.

Co to jest Docker?

Docker to narzędzie do konteneryzacji — pozwala uruchamiać aplikacje w izolowanych, lekkich pudełkach zwanych kontenerami.

Każdy kontener:

  • Ma własny system plików, biblioteki i konfigurację
  • Jest odizolowany od reszty systemu i innych kontenerów
  • Działa identycznie wszędzie — na Twoim serwerze, u kolegi, w chmurze
  • Uruchamia się w sekundy (nie w minuty jak maszyna wirtualna)

Kontener vs maszyna wirtualna

To najczęstsze pytanie początkujących. Różnica jest fundamentalna:

Maszyna wirtualna (VM)

Maszyna wirtualna to cały komputer w komputerze — ma własny system operacyjny, własne jądro, własną pamięć. To jakbyś postawił drugi komputer wewnątrz swojego serwera.

Kontener Docker

Kontener to lekkie pudełko z aplikacją — współdzieli jądro systemu (kernel) z hostem, ale ma własne pliki, biblioteki i konfigurację. Nie potrzebuje osobnego systemu operacyjnego.

💡 Czym jest jądro systemu (kernel)?

Jądro to najgłębsza warstwa systemu operacyjnego — zarządza sprzętem i zasobami (pamięcią, procesorem, dyskiem). Kontener korzysta z jądra Twojego serwera zamiast mieć własne — dlatego jest taki lekki i szybki.

Cecha Maszyna wirtualna Kontener Docker
Start Minuty Sekundy
Rozmiar Gigabajty Megabajty
Zużycie RAM Dużo (osobny OS) Mało (współdzielone jądro)
Izolacja Pełna (osobny OS) Na poziomie procesu
Ile na serwerze? Kilka Dziesiątki/setki

Analogia: dom vs mieszkanie

  • Maszyna wirtualna = osobny dom — ma własne fundamenty, ściany, dach, instalację wod-kan. Kosztowny, ale w pełni niezależny
  • Kontener = mieszkanie w bloku — ma własne ściany i drzwi (izolacja), ale dzieli fundamenty, dach i instalacje z innymi mieszkaniami. Lekki, szybki, tani

Obraz vs kontener

To kluczowe rozróżnienie, które będziesz stosować codziennie:

Obraz (image)

Obraz to przepis / szablon. Zawiera:

  • System operacyjny (np. Ubuntu, Alpine)
  • Zainstalowane programy (np. Node.js, Caddy)
  • Pliki konfiguracyjne
  • Instrukcje jak uruchomić aplikację

Obraz jest niezmienny — raz zbudowany, nie modyfikujesz go.

Kontener (container)

Kontener to uruchomiony obraz — jak gotowe danie z przepisu. Możesz:

  • Uruchomić wiele kontenerów z jednego obrazu
  • Każdy kontener działa niezależnie
  • Kontener można zatrzymać, usunąć, uruchomić ponownie

💡 Analogia

Obraz = przepis na ciasto, kontener = upieczone ciasto. Z jednego przepisu możesz upiec wiele ciast — każde jest niezależne.

Docker Hub — sklep z obrazami

Docker Hub (hub.docker.com) to repozytorium gotowych obrazów. Znajdziesz tam tysiące aplikacji gotowych do uruchomienia jedną komendą:

  • caddy — serwer webowy z automatycznym HTTPS
  • postgres — baza danych PostgreSQL
  • n8nio/n8n — automatyzacje n8n
  • redis — cache/baza klucz-wartość

💡 Obrazy oficjalne vs community

Obrazy oficjalne (oznaczone „Docker Official Image”) są utrzymywane przez Docker lub twórców oprogramowania. Preferuj je nad obrazami community — są bezpieczniejsze i regularnie aktualizowane.

Zamiast ręcznie instalować Caddy (pobieranie, konfiguracja, zależności), po prostu uruchamiasz:

docker run -d -p 80:80 caddy

Jedna komenda — i masz działający serwer webowy.

Kiedy używać Dockera?

Docker to świetny wybór gdy:

  • Stawiasz aplikacje na serwerze — n8n, Nextcloud, Gitea, bazy danych
  • Chcesz łatwych aktualizacji — nowa wersja = nowy obraz, wymiana jedną komendą
  • Potrzebujesz izolacji — każda aplikacja w swoim pudełku, nie kolidują ze sobą
  • Chcesz powtarzalności — ten sam plik docker-compose.yml działa na każdym serwerze

Docker nie jest potrzebny gdy:

  • Uruchamiasz prostą komendę jednorazowo
  • Potrzebujesz pełnego dostępu do hardware (np. sterowniki GPU — choć Docker to wspiera, jest trudniejsze)
  • Masz jedną prostą aplikację i nie planujesz niczego więcej

Podsumowanie

Zapamiętaj te 5 rzeczy:

  1. Docker = narzędzie do uruchamiania aplikacji w izolowanych kontenerach
  2. Kontener ≠ maszyna wirtualna — jest lżejszy, szybszy, współdzieli jądro systemu
  3. Obraz = szablon/przepis (niezmienny), kontener = uruchomiony obraz
  4. Docker Hub = repozytorium gotowych obrazów do pobrania
  5. Docker rozwiązuje problem „u mnie działa” — aplikacja w kontenerze działa identycznie wszędzie

📚 Podstawy Docker — przewodnik

Następny artykuł → Podstawy Docker #2: Instalacja Docker i Docker Compose

Roman Rozenberger
Roman Rozenberger

Jestem digital marketerem ze specjalizacją w marketingu w wyszukiwarkach internetowych. Wdrażam automatyzacje z wykorzystaniem narzędzi LowCode, NoCode i AI. Identyfikuje procesy i rozwiązuję problemy.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *