Instalacja Dockera w popularnych dystrybucjach Linuksa: poradnik instalacji Dockera w systemie Linux
Poziom: Średnio zaawansowany
Szacowany czas: ok. 15 minut
Cel: Skonfigurować bezpieczne, zdecentralizowane środowisko, instalując Dockera do samodzielnego hostowania usług osobistych, takich jak Nextcloud, Bitwarden i Matrix.
Wprowadzenie
Samodzielne hostowanie usług „chmurowych” gwarantuje prywatność i pełną własność danych. Aby wdrożyć usługi takie jak Nextcloud (przechowywanie plików), Bitwarden (zarządzanie hasłami) czy Matrix (bezpieczna komunikacja) bez zmagania się ze skomplikowanymi zależnościami na poziomie hosta, potrzebne są odizolowane środowiska. W tym poradniku pokażemy, jak zainstalować Dockera w Linuksie, aby zbudować solidny, odtwarzalny fundament dla self-hostingu. Niezależnie od tego, czy potrzebujesz pełnej konfiguracji Dockera w Linuksie dla pojedynczego serwera, czy dla całej floty, każdy z poniższych kroków dotyczy Ubuntu, Debiana i dystrybucji zgodnych z RHEL. Po przejściu przez ten poradnik instalacji Dockera w Linuksie uzyskasz gotowe do produkcji środowisko skonfigurowane z domyślnymi ustawieniami bezpieczeństwa zgodnymi z dobrymi praktykami.
Terminologia
Zanim przejdziesz dalej, upewnij się, że rozumiesz poniższe podstawowe pojęcia:
- Docker: platforma do tworzenia, dostarczania i uruchamiania aplikacji w izolowanych środowiskach.
- Docker Engine: podstawowa technologia klient-serwer, która tworzy i uruchamia kontenery.
- Kontener (Container): ustandaryzowany, wykonywalny komponent łączący kod źródłowy aplikacji z bibliotekami systemu operacyjnego i zależnościami potrzebnymi do jej uruchomienia.
- Obraz (Image): szablon tylko do odczytu z instrukcjami tworzenia kontenera.
- Demon Dockera (Docker daemon): usługa działająca w tle na hoście, która zarządza budowaniem, uruchamianiem i dystrybucją kontenerów.
- Docker CLI: interfejs wiersza poleceń służący do komunikacji z demonem.
- Docker Hub: publiczny rejestr utrzymywany przez Docker do wyszukiwania i udostępniania obrazów kontenerów.
- Rejestr (Registry): system przechowywania i dystrybucji obrazów kontenerów.
- Instalacja: proces przygotowania programów do uruchomienia.
- Menedżer pakietów: narzędzie, które automatyzuje instalowanie, aktualizowanie, konfigurowanie i usuwanie programów.
- Repozytorium: centralne miejsce, w którym przechowywane i utrzymywane są pakiety oprogramowania.
- Oficjalne repozytorium Dockera: zaufane źródło utrzymywane przez Docker, z którego pobiera się stabilne pakiety oprogramowania.
- Pakiet: skompresowane archiwum plików zawierające wszystkie pliki dostarczane z daną aplikacją.
- Zależność: program lub biblioteka wymagane przez inny program do prawidłowego działania.
- Wydanie stabilne (Stable release): wersja oprogramowania, która została gruntownie przetestowana i jest uznawana za niezawodną w środowisku produkcyjnym.
- Wersja: unikalny stan oprogramowania odzwierciedlający jego konkretne funkcje i poprawki.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że spełnione są następujące warunki:
- System operacyjny: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 lub dystrybucja zgodna z RHEL (AlmaLinux, Rocky, RHEL) 8/9/10
- Dostęp: dostęp sudo lub root do serwera
- Wymagana wiedza: swobodne posługiwanie się wierszem poleceń Linuksa
Krok 1: Konfiguracja repozytorium Dockera
Aby uzyskać najnowsze, bezpieczne i stabilne wydanie, zawsze korzystaj z oficjalnego repozytorium Dockera, a nie z domyślnych repozytoriów systemu operacyjnego.
Dla Ubuntu:
Najpierw zaktualizuj indeks menedżera pakietów Linuksa i zainstaluj pakiety wymagane, aby apt mógł korzystać z repozytorium przez HTTPS:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Dodaj oficjalny klucz GPG Dockera:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Skonfiguruj repozytorium stabilne:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dla Debiana:
Kroki służące do instalacji Dockera w Debianie odpowiadają procedurze dla Ubuntu, ale wskazują adres URL repozytorium właściwy dla Debiana. Najpierw zaktualizuj indeks menedżera pakietów Linuksa i zainstaluj wymagane pakiety:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Dodaj oficjalny klucz GPG Dockera:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Skonfiguruj repozytorium stabilne:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dla dystrybucji zgodnych z RHEL (AlmaLinux, Rocky, RHEL):
Zainstaluj pakiet yum-utils i skonfiguruj repozytorium stabilne:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Docker publikuje pakiety dla wszystkich dystrybucji zgodnych z RHEL (w tym AlmaLinux i Rocky Linux) pod ścieżką repozytorium centos. Użycie tego adresu URL jest zamierzone i w pełni wspierane.
Wynik: Repozytorium Dockera zostało dodane do systemu, dzięki czemu menedżer pakietów może pobierać najnowsze pakiety Dockera.
Krok 2: Instalacja Dockera w Ubuntu i Debianie
Po skonfigurowaniu repozytorium Dockera przejdź do instalacji Docker Engine w Ubuntu (lub Debianie - polecenia są identyczne). Ten krok dotyczy obu dystrybucji.
Najpierw usuń wszelkie kolidujące pakiety dostarczane przez repozytoria systemu operacyjnego:
sudo apt remove docker.io podman-docker containerd runc
Ponownie zaktualizuj indeks pakietów apt i za pomocą menedżera pakietów Linuksa zainstaluj wymagane komponenty:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Wynik: Polecenie zostaje wykonane i pobiera z repozytorium Dockera pakiety wraz z wszystkimi wymaganymi zależnościami. Menedżer pakietów powinien zakończyć instalację Docker Engine bez błędów.
docker-ce oznacza Docker Community Edition, czyli bezpłatną wersję idealną dla osób hostujących usługi samodzielnie.
Krok 3: Instalacja Dockera w dystrybucjach zgodnych z RHEL (AlmaLinux, Rocky, RHEL)
W systemach opartych na RHEL do instalacji Docker Engine użyj yum.
Najpierw usuń wszelkie kolidujące pakiety dostarczane przez repozytoria systemu operacyjnego:
sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc
Uruchom następujące polecenie:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Wynik: Menedżer pakietów instaluje niezbędne pakiety. Zostaniesz poproszony o zaakceptowanie klucza GPG (chyba że użyjesz flagi -y); potwierdź go. Po zakończeniu zobaczysz komunikat o powodzeniu.
Krok 4: Weryfikacja instalacji Docker Engine
Po instalacji zachowanie demona Dockera zależy od dystrybucji. W Ubuntu i Debianie docker.service uruchamia się automatycznie po instalacji. W dystrybucjach z rodziny RHEL tak się nie dzieje.
Tylko rodzina RHEL: jeśli proces instalacji zaktualizował jądro (na przykład poprzez zależność kernel-core), uruchom serwer ponownie przed startem usługi Docker:
sudo reboot
Pominięcie tego kroku może spowodować, że systemctl start docker zakończy się błędami br_netfilter / addrtype, ponieważ działające jądro nie odpowiada już zainstalowanym modułom.
Gdy serwer działa już na aktualnym jądrze, uruchom i włącz usługę. Poniższe polecenia są idempotentne i bezpieczne do uruchomienia w każdym systemie:
sudo systemctl start docker sudo systemctl enable docker
Wynik: Demon Dockera zostaje uruchomiony, a system tworzy dowiązanie symboliczne, aby uruchamiał się automatycznie po każdym restarcie.
Sprawdź, czy instalacja Docker Engine zakończyła się powodzeniem, uruchamiając obraz hello-world:
sudo docker run hello-world
Wynik: Docker CLI łączy się z demonem Dockera, pobiera obraz hello-world z Docker Hub i uruchamia kontener. W terminalu powinien pojawić się komunikat „Hello from Docker!”.
Krok 5: Czynności po instalacji Dockera
Domyślnie uruchamianie poleceń Dockera wymaga sudo. Aby uruchamiać je jako użytkownik bez uprawnień root, musisz dodać swojego użytkownika do grupy docker. To podstawowe czynności po instalacji Dockera, które ułatwiają wygodne zarządzanie własną infrastrukturą.
Utwórz grupę docker (jeśli jeszcze nie istnieje):
getent group docker || sudo groupadd docker
Dodaj swojego użytkownika do grupy docker:
sudo usermod -aG docker $USER
Wynik: Użytkownik zostaje dodany do grupy. Aby zmiany zaczęły obowiązywać, musisz się wylogować i zalogować ponownie albo aktywować nowe członkostwo w grupie w bieżącej sesji:
newgrp docker
newgrp docker tworzy nową powłokę z zaktualizowanym członkostwem w grupach. Każde polecenie docker uruchomione później będzie działać bez sudo, ale tylko w tej nowej powłoce. Otwarcie kolejnego terminala nadal wymaga pełnego ponownego zalogowania.
Członkostwo w grupie docker daje uprawnienia równoważne dostępowi root do hosta. W środowiskach self-hostingu, w których priorytetem jest bezpieczeństwo, rozważ uruchamianie Dockera w trybie rootless (zob. Krok 6).
Po wykonaniu newgrp docker (lub po wylogowaniu i ponownym zalogowaniu) przetestuj konfigurację, uruchamiając polecenie bez sudo:
docker run hello-world
Wynik: Powinieneś ponownie zobaczyć komunikat „Hello from Docker!”, co potwierdza, że czynności po instalacji Dockera zakończyły się powodzeniem.
Alternatywa: szybka instalacja za pomocą skryptu pomocniczego
W środowiskach testowych lub deweloperskich Docker udostępnia skrypt pomocniczy (convenience script).
Ta metoda nie jest zalecana w środowisku produkcyjnym. Działa bez przypinania wersji, wykonuje bezwarunkową aktualizację, jeśli Docker jest już zainstalowany, i pobiera wszystkie zależności bez weryfikacji.
Zaleca się pobranie skryptu i sprawdzenie go przed uruchomieniem:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Krok 6 (opcjonalny): Uruchamianie Dockera w trybie rootless
W środowiskach self-hostingu uruchamianie Dockera w trybie rootless zwiększa bezpieczeństwo, ponieważ demon Dockera i kontenery działają jako użytkownik bez uprawnień root.
6.1 Wymagania wstępne
Najpierw zatrzymaj i wyłącz ogólnosystemową usługę oraz gniazdo (socket) Dockera, a następnie usuń plik gniazda:
sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock
Sprawdź, czy dla Twojego użytkownika skonfigurowano subuid i subgid (zwykle dzieje się to automatycznie):
cat /etc/subuid cat /etc/subgid
Włącz lingering dla swojego użytkownika, aby demon mógł uruchamiać się przy starcie systemu:
sudo loginctl enable-linger $USER
6.2 Instalacja dodatkowych pakietów
Dla Ubuntu/Debiana:
sudo apt install docker-ce-rootless-extras uidmap dbus-user-session
Dla AlmaLinux/RHEL (shadow-utils dostarcza uidmap i zwykle jest już zainstalowany):
sudo yum install docker-ce-rootless-extras
6.3 Instalacja demona rootless
Uruchom skrypt instalacyjny z pełnej sesji logowania docelowego użytkownika (nie z sudo su ani z powłoki SSH bez logowania). Jeśli pracujesz w kontekście bez logowania, najpierw wyeksportuj wymagane zmienne:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
Następnie uruchom skrypt instalacyjny:
dockerd-rootless-setuptool.sh install
Pierwsze uruchomienie skryptu instalacyjnego tuż po włączeniu lingeringu może być niestabilne. Jeśli demon się nie uruchomi, po prostu uruchom skrypt instalacyjny ponownie.
6.4 Konfiguracja zmiennych środowiskowych
Dodaj poniższe zmienne do pliku konfiguracyjnego powłoki (np. ~/.bashrc):
export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Załaduj plik (source) lub uruchom powłokę ponownie, aby zastosować zmiany.
6.5 Ograniczenia trybu rootless
- Nie można publikować portów < 1024 (Docker oferuje obejścia, takie jak
setcap, przekierowanie portówslirp4netnslub routing). - Brak obsługi
--net=host. - Tryb Swarm i sieci overlay nie są obsługiwane.
- AppArmor nie jest obsługiwany.
- Flaga
--privilegednie przyznaje dostępu root na poziomie hosta. - Dane są przechowywane w
~/.local/share/docker(należy to uwzględnić przy kopiach zapasowych i limitach). - Wymaga cgroup v2.
- Używa sterownika magazynu
overlayfszamiastoverlay2.
Wycofanie zmian (rollback)
Jeśli chcesz cofnąć instalację Dockera w Linuksie - zarówno standardową, jak i w trybie rootless - wykonaj poniższe kroki w podanej kolejności.
1. Wycofanie trybu rootless (pomiń, jeśli nie był skonfigurowany):
Jeśli skonfigurowano tryb rootless, najpierw cofnij te zmiany, a dopiero potem usuwaj pakiety:
dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER
Odinstalowanie trybu rootless po usunięciu pakietów (purge) zakończy się niepowodzeniem, ponieważ skrypt instalacyjny jest częścią pakietu docker-ce-rootless-extras. Zawsze odinstalowuj tryb rootless, dopóki pakiety są jeszcze obecne.
2. Usunięcie pakietów:
Debian/Ubuntu:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
AlmaLinux/Rocky/RHEL:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo
3. Usunięcie grupy:
sudo groupdel docker || true
Usunięcie pakietów nie powoduje automatycznego usunięcia obrazów, kontenerów, woluminów ani zmodyfikowanych plików konfiguracyjnych. Polecenia rm -rf trwale usuwają te katalogi z danymi.
Podsumowanie
Twoja instalacja Dockera w Linuksie jest ukończona i zweryfikowana. Fundament został bezpiecznie przygotowany. Możesz teraz wdrażać kontenery dla swoich samodzielnie hostowanych narzędzi, zachowując pełną kontrolę nad plikami w Nextcloud, sejfami Bitwarden i komunikacją w Matrix.
Wersja dokumentu: 1.0
Ostatnia aktualizacja: maj 2026
Właściciel: Zespół dokumentacji technicznej