DevOps

Docker dla Początkujących: Konteneryzacja w Praktyce

Wprowadzenie do Docker i konteneryzacji dla programistów, którzy chcą usprawnić swój workflow.


"U mnie działa" - to zdanie jest powodem ~30% konfliktów między developerami a DevOps. Docker to rozwiązuje. Pakujesz aplikację razem z jej środowiskiem i działa wszędzie tak samo.

83% firm używa konteneryzacji w produkcji (CNCF Survey 2024)

Docker w 60 sekund

Bez Dockera
  • "Zainstaluj Node 18... nie, czekaj, 16... albo 20"
  • "Mam inną wersję PostgreSQL"
  • "Na Windows działa, na Linuxie nie"
  • Każdy dev ma inne środowisko
  • Setup nowego developera = pół dnia
Z Dockerem
  • Wersje zdefiniowane w Dockerfile
  • Baza danych w kontenerze (ta sama u wszystkich)
  • Działa wszędzie gdzie jest Docker
  • Identyczne środowisko dla całego zespołu
  • Setup = `docker-compose up`

Podstawowe pojęcia

Image
"Przepis" na kontener

Niezmienne, read-only. Definiuje: bazowy OS, zainstalowane pakiety, kod aplikacji. Wersjonowane, przechowywane w registry (Docker Hub, ECR).

Container
Uruchomiony image

Izolowany proces z własnym filesystem, siecią, PID namespace. Można mieć wiele kontenerów z tego samego image'a.

Dockerfile
Instrukcje budowy image'a

Tekstowy plik z krokami: FROM (bazowy image), COPY (kopiuj pliki), RUN (wykonaj komendy), CMD (co uruchomić).

Docker Compose
Orkiestracja wielu kontenerów

Definiujesz: app + baza + redis + nginx w jednym pliku. `docker-compose up` = wszystko działa.

Przykładowy Dockerfile (Node.js)

# Bazowy image FROM node:20-alpine # Katalog roboczy WORKDIR /app # Kopiuj package.json i instaluj zależności COPY package*.json ./ RUN npm ci --only=production # Kopiuj kod aplikacji COPY . . # Expose port EXPOSE 3000 # Uruchom aplikację CMD ["node", "server.js"]

Najważniejsze komendy

docker build buduje image z Dockerfile
docker run uruchamia kontener
docker ps lista kontenerów
docker logs logi kontenera

Docker Compose - przykład

# docker-compose.yml version: '3.8' services: app: build: . ports: - "3000:3000" depends_on: - db db: image: postgres:15 environment: POSTGRES_PASSWORD: secret volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:

Teraz `docker-compose up` uruchamia aplikację + bazę danych. Działa na każdym komputerze z Dockerem.

Kiedy NIE używać Dockera?

Super prosty projekt - jedna statyczna strona? Może overkill.

Brak DevOps w zespole - Docker wymaga nauki. Jeśli nikt go nie zna, może przynieść więcej problemów.

Windows-specific aplikacje - Docker na Windows jest... skomplikowany.

Chcesz wdrożyć Docker w swoim projekcie?

Pomożemy skonfigurować środowisko, napisać Dockerfile i przeszkolić zespół z podstaw konteneryzacji.

Kategoria: DevOps
Udostępnij:

Krzysztof Nowicki

Ekspert Halo Soft

Potrzebujesz pomocy z podobnym projektem?

Skontaktuj się z nami - chętnie pomożemy!

Powiązane artykuły