Podstawy Docker #2: Instalacja Docker i Docker Compose

Czas zainstalować Dockera na serwerze. W tym poradniku przejdziesz przez instalację Docker Engine i Docker Compose na Ubuntu/Debian — krok po kroku, z oficjalnego repozytorium.
Przed instalacją
Upewnij się, że:
- Masz serwer z Ubuntu 22.04+ lub Debian 12+
- Jesteś zalogowany jako użytkownik z uprawnieniami
sudo - Serwer ma dostęp do internetu
⚠️ Nie instaluj z domyślnego repo systemowego
Pakiet docker.io dostępny przez apt install docker.io to starsza wersja. Zawsze instaluj z oficjalnego repozytorium Docker — dostajesz najnowszą wersję i aktualizacje bezpieczeństwa.
⚠️ Docker a firewall (ufw)
Jeśli używasz ufw — uwaga: gdy wystawiasz porty kontenerów (-p), Docker omija reguły ufw. Porty kontenerów będą dostępne z zewnątrz nawet jeśli ufw je blokuje. Dzieje się tak, bo Docker tworzy własne reguły w iptables, które mają wyższy priorytet niż ufw.
Krok 1: Usuń stare wersje (jeśli są)
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
💡 Błędy to normalne
Jeśli zobaczysz komunikaty typu „package not found” — to normalne. Oznacza to, że dany pakiet nie był zainstalowany. Kontynuuj dalej.
Krok 2: Zainstaluj wymagane pakiety i dodaj klucz GPG
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
Ubuntu:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Debian:
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Krok 3: Dodaj repozytorium Docker
Ubuntu:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Debian:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Krok 4: Zainstaluj Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
To instaluje:
- docker-ce — Docker Engine
- docker-ce-cli — komendy
dockerw terminalu - containerd.io — runtime kontenerów
- docker-buildx-plugin — budowanie obrazów
- docker-compose-plugin — Docker Compose v2
Krok 5: Weryfikacja
docker --version
Powinieneś zobaczyć coś jak:
Docker version 27.x.x, build xxxxxxx
Sprawdź czy usługa działa:
sudo systemctl status docker
Uruchom testowy kontener:
sudo docker run hello-world
Jeśli widzisz komunikat „Hello from Docker!” — instalacja się udała.
Krok 6: Dodaj użytkownika do grupy docker
Domyślnie Docker wymaga sudo przy każdej komendzie. Żeby tego uniknąć, dodaj swojego użytkownika do grupy docker:
sudo usermod -aG docker $USER
⚠️ Wymagane przelogowanie
System wczytuje uprawnienia grup tylko przy logowaniu. Musisz się wylogować i zalogować ponownie:
exit
Potem połącz się ponownie przez SSH. Po przelogowaniu sprawdź:
docker run hello-world
Krok 7: Autostart Docker
Docker powinien uruchamiać się automatycznie po restarcie serwera. Sprawdź:
sudo systemctl is-enabled docker
Jeśli wynik to enabled — wszystko OK. Jeśli nie:
sudo systemctl enable docker
Docker Compose
Docker Compose v2 zainstalował się razem z Docker Engine (pakiet docker-compose-plugin). Sprawdź:
docker compose version
Wynik:
Docker Compose version v2.x.x
Gdyby docker compose version zwróciło błąd, doinstaluj ręcznie:
sudo apt install -y docker-compose-plugin
Compose v1 vs v2
| Cecha | v1 (stary) | v2 (nowy) |
|---|---|---|
| Komenda | docker-compose (z myślnikiem) |
docker compose (ze spacją) |
| Instalacja | Osobny program (Python) | Plugin do Docker Engine |
| Status | Przestarzały (EOL) | Aktualny — używaj tego |
⚠️ Używaj v2
Jeśli trafisz na tutorial z docker-compose (z myślnikiem) — zamień na docker compose (ze spacją). Stara wersja nie jest już rozwijana.
Rozwiązywanie problemów
„Permission denied” przy docker run
Nie dodałeś użytkownika do grupy docker lub nie przelogowałeś się. Sprawdź:
groups
Jeśli nie widzisz docker na liście — wykonaj ponownie krok 6 i przeloguj się.
„Cannot connect to the Docker daemon”
Docker nie jest uruchomiony:
sudo systemctl start docker
sudo systemctl status docker
Konflikt portów
Jeśli inna aplikacja zajmuje port, Docker nie uruchomi kontenera na tym porcie. Sprawdź kto zajmuje port (np. 80):
sudo ss -tlnp | grep :80
Podsumowanie
| Co | Komenda |
|---|---|
| Wersja Docker | docker --version |
| Wersja Compose | docker compose version |
| Test | docker run hello-world |
| Status usługi | sudo systemctl status docker |
| Autostart | sudo systemctl enable docker |
| Grupa docker | sudo usermod -aG docker $USER |
📚 Podstawy Docker — przewodnik
← Podstawy Docker #1: Czym jest Docker | Następny → Podstawy Docker #3: Podstawowe komendy






