Docker
Docker Engine & Docker Desktop
Konteneryzacja aplikacji - standard w kazdym zespole DevOps. Pakuj aplikacje z ich zaleznosci i uruchamiaj identycznie na laptopie, serwerze i w chmurze.
Konteneryzacja to standard w branzy cloud. Bez Dockera nie zrozumiesz ECS, EKS ani Fargate. Wiekszosc ofert pracy dla Cloud Engineera wymaga znajomosci Dockera jako podstawowej umiejetnosci.
Docker to platforma do konteneryzacji, ktora zmienila sposob budowania, dostarczania i uruchamiania aplikacji. Kontener to lekka, izolowana jednostka, ktora zawiera aplikacje wraz ze wszystkimi jej zaleznoscia - bibliotekami, plikami konfiguracyjnymi i runtime. Dzieki temu aplikacja dziala identycznie niezaleznie od srodowiska.
Dla Cloud Engineera Docker to absolutna podstawa. Wiekszosc nowoczesnych architektur w AWS opiera sie na kontenerach - czy to przez ECS, EKS czy Fargate. Bez znajomosci Dockera nie zbudujesz produkcyjnego pipeline CI/CD ani nie wdrozysz mikroserwisow.
Docker rozwiazuje klasyczny problem "u mnie dziala". Zamiast instalowac zaleznosci na kazdym serwerze, pakujesz wszystko do obrazu i uruchamiasz jako kontener. To szybsze niz maszyny wirtualne, latwiejsze w zarzadzaniu i idealne do skalowania w chmurze.
Docker wykorzystuje mechanizmy jadra Linux (cgroups, namespaces) do izolowania procesow. Kontener dzieli jadro z hostem, co czyni go znacznie lzejszym niz maszyna wirtualna.
Napisz Dockerfile
Zdefiniuj bazowy obraz, skopiuj kod, zainstaluj zaleznosci i ustaw polecenie startowe.
Zbuduj obraz
Polecenie docker build wykonuje kazda instrukcje Dockerfile i tworzy warstwy obrazu. Kazda warstwa jest cache'owana.
Wyslij do rejestru
Docker push przesyla obraz do rejestru (Docker Hub, ECR, GitLab Registry). Stamtad moze go pobrac kazdy serwer.
Uruchom kontener
Docker pull pobiera obraz, a docker run tworzy kontener z izolowanym systemem plikow i siecia.
Orkiestracja
Na produkcji narzedzia jak ECS, EKS lub Docker Swarm zarzadzaja kontenerami - restartuja, skaluja i balansuja ruch.
Praktyczne wskazowki, ktore pomoga Ci efektywnie korzystac z Dockera w codziennej pracy Cloud Engineera.
Uzywaj multi-stage builds
Oddziel etap budowania od produkcyjnego obrazu. Finalny obraz jest mniejszy i bezpieczniejszy - nie zawiera kompilatora ani zrodel.
ZaawansowanyNie uruchamiaj jako root
Dodaj USER w Dockerfile. Uruchamianie kontenerow jako root to ryzyko bezpieczenstwa, szczegolnie w srodowiskach wielodostepnych.
PoczatkujacyPinuj wersje bazowe
Zamiast FROM node:latest uzyj FROM node:20.11-alpine. Tag latest moze sie zmienic i zepsuc Twoj build.
PoczatkujacySkanuj obrazy pod katem CVE
Uzyj docker scout, Trivy lub ECR image scanning. Podatnosci w bazowym obrazie to podatnosci w Twojej aplikacji.
ZaawansowanyOptymalizuj warstwy cache
Kopiuj najpierw pliki zaleznosci (package.json), potem reszte kodu. Zmiana kodu nie wymusi reinstalacji pakietow.
ZaawansowanyDo czego sluzy Docker?
Lokalne srodowiska developerskie
Uruchom caly stack (baza danych, backend, frontend) jednym poleceniem docker compose up. Nowy developer w zespole jest produktywny w minuty, nie godziny.
Mikroserwisy w chmurze
Kazdy mikroserwis jako osobny kontener. Niezalezne wdrazanie, skalowanie i aktualizacja poszczegolnych czesci aplikacji.
CI/CD pipelines
Buduj obrazy Docker w pipeline, testuj w identycznym srodowisku i wdrazaj na produkcje. Powtarzalny i niezawodny proces.
Izolacja procesow na serwerach
Uruchom wiele aplikacji na jednym serwerze bez konfliktow. Kazdy kontener ma wlasne biblioteki i konfiguracje.
Co musisz wiedziec?
Image (obraz)
Niezmienny szablon zawierajacy kod aplikacji, biblioteki i konfiguracje. Budowany z Dockerfile. Mozna go wersjonowac i udostepniac przez rejestry.
Container (kontener)
Uruchomiona instancja obrazu. Lekki, izolowany proces z wlasnym systemem plikow, siecia i PID namespace. Startuje w sekundy.
Dockerfile
Plik tekstowy z instrukcjami budowania obrazu. Definiuje bazowy obraz, kopiowanie plikow, instalacje zaleznosci i polecenie startowe.
Docker Compose
Narzedzie do definiowania wielokontenerowych aplikacji w pliku YAML. Jeden plik docker-compose.yml opisuje caly stack.
Registry (rejestr)
Magazyn obrazow Docker. Docker Hub to publiczny rejestr, AWS ECR to prywatny rejestr w chmurze Amazon.
Volume
Mechanizm trwalego przechowywania danych. Dane w volume przetrwaja restart i usuniecie kontenera.
Przyklady Docker CLI
Budowanie obrazu
Zbuduj obraz Docker z Dockerfile w biezacym katalogu
docker build -t moja-aplikacja:1.0 .
Uruchomienie kontenera
Uruchom kontener z mapowaniem portow i w tle
docker run -d -p 8080:80 --name web moja-aplikacja:1.0
Docker Compose
Uruchom caly stack zdefiniowany w docker-compose.yml
docker compose up -d
Wyslanie obrazu do ECR
Otaguj i wyslij obraz do rejestru AWS ECR
aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 123456789.dkr.ecr.eu-central-1.amazonaws.com
docker tag moja-aplikacja:1.0 123456789.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:1.0
docker push 123456789.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:1.0
Jak Docker dziala z AWS?
Docker jest fundamentem uslug kontenerowych AWS. Amazon ECR przechowuje obrazy Docker. Amazon ECS i AWS Fargate uruchamiaja kontenery Docker bez zarzadzania serwerami. Amazon EKS uruchamia Kubernetes, ktory orkiestruje kontenery Docker. AWS CodeBuild buduje obrazy Docker w pipeline CI/CD. AWS App Runner automatycznie wdraza kontenery Docker z repozytorium.
Quiz: Docker
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz - feedback pojawi sie od razu.
1. Czym rozni sie obraz Docker od kontenera?
2. Co robi polecenie docker-compose up -d?
3. Dlaczego warto uzywac multi-stage builds?
Serwisy AWS powiazane z Docker
Chcesz poznac Docker w praktyce?
Kurs Docker jest w przygotowaniu. Zapisz sie na newsletter, zeby nie przegapic premiery. W miedzyczasie sprawdz darmowy kurs "AWS od podstaw".