Docker – konteneryzacja dla początkujących

TL;DR: Docker to narzędzie które pakuje aplikację wraz z wszystkim czego potrzebuje do działania (biblioteki, system operacyjny) w jeden „kontener”. Dzięki temu aplikacja działa identycznie na każdym komputerze – Twoim, serwerze, czy komputerze kolegi.

Jeśli programujesz od jakiegoś czasu, pewnie spotkałeś się z problemem „u mnie działa”. Aplikacja perfekcyjnie funkcjonuje na Twoim komputerze, ale na serwerze produkcyjnym lub u kolegi z zespołu nie chce się uruchomić. Docker rozwiązuje ten problem raz na zawsze.

Dlaczego Docker jest ważny

Rok 2016 to przełomowy moment dla Docker. Ta technologia, która pojawiła się zaledwie 3 lata temu, zaczyna rewolucjonizować sposób w jaki wdrażamy aplikacje. Wielkie firmy jak Google, Netflix czy Amazon już używają kontenerów w swoich systemach produkcyjnych.

Docker eliminuje jeden z największych problemów w IT – różnice między środowiskami. Dzięki konteneryzacji deweloperzy mogą skupić się na pisaniu kodu, zamiast walczyć z problemami instalacji i konfiguracji.

Co się nauczysz:

  • Czym jest Docker i konteneryzacja
  • Jaka jest różnica między kontenerem a maszyną wirtualną
  • Jak zainstalować Docker na swoim komputerze
  • Jak uruchomić pierwszy kontener
  • Podstawowe komendy Docker które musisz znać

Wymagania wstępne:

  • Podstawowa znajomość wiersza poleceń (terminal/cmd)
  • Rozumienie czym jest aplikacja i biblioteki
  • Komputer z systemem Linux, Mac lub Windows 10 Pro
  • Połączenie z internetem do pobierania obrazów

Czym dokładnie jest Docker

Analogia: Docker to jak kontener transportowy. Możesz zapakować swoje rzeczy (aplikację) do kontenera wraz z wszystkim czego potrzebują (jedzenie, ubrania, narzędzia). Taki kontener możesz przewieźć statkiem, pociągiem czy ciężarówką – zawartość pozostanie nietknięta i gotowa do użycia.

Docker to platforma do tworzenia, uruchamiania i zarządzania kontenerami. Kontener to pakiet zawierający aplikację wraz z wszystkimi jej zależnościami – bibliotekami, konfiguracją, a nawet częściami systemu operacyjnego.

Konteneryzacja – metoda pakowania aplikacji która izoluje ją od systemu operacyjnego gospodarza, ale dzieli z nim jądro systemu.

Kontener vs Maszyna Wirtualna

Wiele osób myli kontenery z maszynami wirtualnymi. To jednak różne technologie:

Kontenery DockerMaszyny Wirtualne
Dzielą jądro OS z hostemKażda ma własny OS
Szybki start (sekundy)Wolny start (minuty)
Mała wielkość (MB)Duża wielkość (GB)
Mniejsze zużycie RAMWiększe zużycie RAM
Portabilność między systemamiOgraniczona portabilność
Kontenery są lżejsze od maszyn wirtualnych, ponieważ nie potrzebują całego systemu operacyjnego. Korzystają z jądra systemu na którym działają.

Instalacja Docker

Docker jest dostępny na wszystkich głównych systemach operacyjnych:

Linux (Ubuntu/Debian)

# Aktualizacja systemu
sudo apt-get update

# Instalacja Docker
sudo apt-get install docker.io

# Dodanie użytkownika do grupy docker
sudo usermod -aG docker $USER

# Sprawdzenie czy działa
docker --version

Windows

Na Windows 10 Pro możesz zainstalować Docker for Windows z oficjalnej strony. Wymaga to włączenia Hyper-V w systemie.

Mac

Pobierz Docker for Mac z oficjalnej strony Docker. Instalacja przebiega jak standardowa aplikacja Mac.

Uwaga: Docker for Windows i Mac używają lekkich maszyn wirtualnych pod spodem, więc mogą być wolniejsze niż natywny Linux.

Pierwszy kontener – Hello World

Sprawdźmy czy Docker działa uruchamiając pierwszy kontener:

# Uruchomienie testowego kontenera
docker run hello-world

Jeśli wszystko działa poprawnie, zobaczysz wiadomość powitalną. Docker automatycznie:

  1. Sprawdzi czy obraz hello-world istnieje lokalnie
  2. Pobierze go z Docker Hub (publiczne repozytorium obrazów)
  3. Uruchomi kontener na podstawie tego obrazu
  4. Wyświetli wiadomość i zakończy działanie
Docker Hub – publiczne repozytorium obrazów Docker, gdzie deweloperzy dzielą się gotowymi aplikacjami i systemami.

Podstawowe komendy Docker

Oto najważniejsze komendy które musisz znać:

Zarządzanie obrazami

# Pobranie obrazu z Docker Hub
docker pull ubuntu

# Lista lokalnych obrazów
docker images

# Usunięcie obrazu
docker rmi ubuntu

Zarządzanie kontenerami

# Uruchomienie kontenera
docker run ubuntu echo "Hello Docker"

# Uruchomienie kontenera w tle
docker run -d nginx

# Lista działających kontenerów
docker ps

# Lista wszystkich kontenerów (także zatrzymanych)
docker ps -a

# Zatrzymanie kontenera
docker stop container_id

# Usunięcie kontenera
docker rm container_id
Pro tip: Zamiast pełnego ID kontenera możesz użyć pierwszych kilku znaków, np. docker stop 3a7 zamiast docker stop 3a7b2c1d...

Praktyczny przykład – serwer web

Uruchommy prawdziwy serwer web w kontenerze:

# Uruchomienie serwera Nginx
docker run -d -p 8080:80 --name moj-serwer nginx

# Sprawdzenie czy działa
docker ps

Teraz otwórz przeglądarkę i wejdź na http://localhost:8080. Zobaczysz stronę powitalną Nginx!

-p 8080:80 – mapuje port 80 z kontenera na port 8080 na Twoim komputerze. Dzięki temu możesz dostać się do aplikacji w kontenerze.

Wejście do wnętrza kontenera

# Wejście do działającego kontenera
docker exec -it moj-serwer bash

# Teraz jesteś wewnątrz kontenera!
# Możesz wykonywać komendy Linux
ls -la
cat /etc/nginx/nginx.conf

# Wyjście z kontenera
exit

Podstawowe pojęcia które musisz znać

Obraz (Image) – szablon do tworzenia kontenerów. Jak „przepis” na ciasto.
Kontener – działająca instancja obrazu. Jak „upieczone ciasto” z przepisu.
Dockerfile – plik tekstowy z instrukcjami jak zbudować obraz.
Registry – miejsce przechowywania obrazów (np. Docker Hub).

Common mistakes – błędy początkujących

Błąd #1: Próba uruchomienia Docker bez uprawnień administratora na Linux. Dodaj użytkownika do grupy docker: sudo usermod -aG docker $USER
Błąd #2: Zapominanie o mapowaniu portów. Bez -p nie dostaniesz się do aplikacji w kontenerze z zewnątrz.
Błąd #3: Zostawianie działających kontenerów. Pamiętaj o docker stop i docker rm żeby posprzątać.
Błąd #4: Instalowanie Docker Toolbox na nowych systemach. Użyj Docker for Windows/Mac jeśli masz Windows 10 Pro lub nowszy Mac.
Czy Docker jest bezpłatny?

Tak, Docker Community Edition jest bezpłatny. Docker Inc. zarabia na wsparciu Enterprise i usługach w chmurze.

Czy kontenery są bezpieczne?

Kontenery są izolowane od systemu gospodarza, ale dzielą jądro. Są bezpieczniejsze niż zwykłe aplikacje, ale mniej niż maszyny wirtualne.

Dlaczego kontener się zatrzymuje?

Kontener działa dopóki działa główny proces. Gdy proces kończy pracę, kontener się zatrzymuje. To normalne zachowanie.

Jak zapisać zmiany w kontenerze?

Użyj docker commit ale lepiej stwórz Dockerfile. Kontenery powinny być „disposable” – łatwe do odtworzenia.

Co to są volumes?

Volumes to sposób na trwałe przechowywanie danych. Bez volumes wszystko znika gdy usuniesz kontener.

Ile kontenerów mogę uruchomić?

Teoretycznie tysiące, praktycznie tyle ile pozwala RAM i CPU. Kontenery są bardzo lekkie.

Przydatne zasoby:

🚀 Zadanie dla Ciebie

Uruchom następujące kontenery i sprawdź czy działają:

  • Serwer Apache: docker run -d -p 8081:80 httpd
  • Baza danych MySQL: docker run -d -e MYSQL_ROOT_PASSWORD=test123 mysql:5.7
  • Redis cache: docker run -d -p 6379:6379 redis

Sprawdź statusy kontenerów, wejdź do środka każdego z nich i zobacz co się dzieje. Na koniec zatrzymaj i usuń wszystkie kontenery.

Masz pytania o Docker? Podziel się swoimi doświadczeniami w komentarzach – Docker na początku może wydawać się skomplikowany, ale szybko stanie się Twoim ulubionym narzędziem!

Zostaw komentarz

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

Przewijanie do góry