Docker
Containers Kurs wkrotce

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.

Dlaczego warto sie nauczyc?

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.

1

Napisz Dockerfile

Zdefiniuj bazowy obraz, skopiuj kod, zainstaluj zaleznosci i ustaw polecenie startowe.

2

Zbuduj obraz

Polecenie docker build wykonuje kazda instrukcje Dockerfile i tworzy warstwy obrazu. Kazda warstwa jest cache'owana.

3

Wyslij do rejestru

Docker push przesyla obraz do rejestru (Docker Hub, ECR, GitLab Registry). Stamtad moze go pobrac kazdy serwer.

4

Uruchom kontener

Docker pull pobiera obraz, a docker run tworzy kontener z izolowanym systemem plikow i siecia.

5

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.

Zaawansowany

Nie uruchamiaj jako root

Dodaj USER w Dockerfile. Uruchamianie kontenerow jako root to ryzyko bezpieczenstwa, szczegolnie w srodowiskach wielodostepnych.

Poczatkujacy

Pinuj wersje bazowe

Zamiast FROM node:latest uzyj FROM node:20.11-alpine. Tag latest moze sie zmienic i zepsuc Twoj build.

Poczatkujacy

Skanuj obrazy pod katem CVE

Uzyj docker scout, Trivy lub ECR image scanning. Podatnosci w bazowym obrazie to podatnosci w Twojej aplikacji.

Zaawansowany

Optymalizuj warstwy cache

Kopiuj najpierw pliki zaleznosci (package.json), potem reszte kodu. Zmiana kodu nie wymusi reinstalacji pakietow.

Zaawansowany

Do czego sluzy Docker?

01

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.

02

Mikroserwisy w chmurze

Kazdy mikroserwis jako osobny kontener. Niezalezne wdrazanie, skalowanie i aktualizacja poszczegolnych czesci aplikacji.

03

CI/CD pipelines

Buduj obrazy Docker w pipeline, testuj w identycznym srodowisku i wdrazaj na produkcje. Powtarzalny i niezawodny proces.

04

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 + 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.

Twoj wynik: 0 / 3

1. Czym rozni sie obraz Docker od kontenera?

2. Co robi polecenie docker-compose up -d?

3. Dlaczego warto uzywac multi-stage builds?

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".

Kurs AWS od podstaw Wszystkie technologie