Docker
Docker to platforma konteneryzacji, która pozwala zapakować aplikację razem ze wszystkimi zależnościami — bibliotekami, interpreterem, konfiguracją — w lekki, przenośny kontener. Kontener uruchamia się identycznie na laptopie dewelopera, serwerze testowym i produkcji, co likwiduje klasyczny problem „u mnie działa". Od premiery w 2013 roku Docker stał się de facto standardem pakowania aplikacji i fundamentem praktyk DevOps.
Jak działa Docker?
W przeciwieństwie do pełnej wirtualizacji kontenery nie emulują sprzętu ani nie uruchamiają osobnego jądra — współdzielą jądro hosta, a izolację zapewniają mechanizmy Linuksa: namespaces (osobne drzewa procesów, sieci, systemy plików) i cgroups (limity CPU/RAM). Kluczowe pojęcia:
- Obraz (image) — niezmienny szablon zbudowany warstwowo według przepisu z pliku Dockerfile; warstwy są cache'owane i współdzielone między obrazami.
- Kontener — działająca instancja obrazu z własną, ulotną warstwą zapisu.
- Rejestr — repozytorium obrazów (Docker Hub, GitLab Registry), z którego serwery pobierają wersje do uruchomienia.
- Wolumeny i sieci — trwałe dane oraz komunikacja między kontenerami.
- Docker Compose — definicja wielousługowego stacka (aplikacja + baza + cache) w jednym pliku YAML, uruchamiana poleceniem docker compose up.
Zastosowanie w praktyce
Najczęstsze scenariusze użycia Dockera:
- Środowiska deweloperskie — cały stack projektu (PHP, MariaDB, Redis) startuje jednym poleceniem, identycznie u każdego członka zespołu.
- CI/CD — pipeline buduje obraz raz, testuje go i ten sam artefakt wdraża na produkcję (zob. CI/CD).
- Hosting aplikacji na VPS — kontenery porządkują serwer: każda usługa w izolacji, aktualizacja to podmiana obrazu, a rollback — powrót do poprzedniego tagu.
- Orkiestracja — przy wielu serwerach kontenerami zarządza Kubernetes lub Docker Swarm, dokładając skalowanie i samonaprawianie.
Dobre praktyki: małe obrazy bazowe (alpine/slim), budowanie wieloetapowe (multi-stage build), jeden proces na kontener i skanowanie obrazów pod kątem podatności.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się kontener Dockera od maszyny wirtualnej?
Maszyna wirtualna emuluje cały komputer z własnym jądrem systemu, przez co waży gigabajty i startuje minutami. Kontener współdzieli jądro hosta, izolując tylko procesy i system plików — zajmuje megabajty i startuje w ułamku sekundy. VM daje mocniejszą izolację, kontener — gęstość i szybkość.
