1. Przygotowanie systemu
1.1. Aktualizacja pakietów
Na początek warto zaktualizować system, aby uniknąć konfliktów pakietów i mieć najnowsze poprawki bezpieczeństwa:
- 1. Przygotowanie systemu
- 2. Dodanie oficjalnego repozytorium Docker
- 3. Instalacja Docker Engine na Rocky Linux 9
- 4. Uruchomienie i włączenie Dockera w systemd
- 5. Test działania – pierwszy kontener
- 6. Używanie Dockera jako zwykły użytkownik (bez sudo)
- 7. Podstawowa konfiguracja Dockera na Rocky Linux 9
- 8. Podstawowe polecenia Dockera – szybki start
- 9. Docker Compose (plugin docker compose)
- 10. Dodatkowe wskazówki dla serwera internetowego
- 11. Rozwiązywanie typowych problemów
sudo dnf update -y
W niektórych poradnikach stosuje się też samą aktualizację metadanych:
sudo dnf check-update
Pełna aktualizacja jest zwykle bardziej praktyczna w środowisku serwerowym.
1.2. Usunięcie potencjalnych konfliktów (Podman, stary Docker)
Rocky Linux 9 domyślnie oferuje narzędzia kontenerowe Podman i Buildah, które mogą kolidować z Dockerem. Aby uniknąć problemów, usuń je wraz z ewentualnymi starymi pakietami Dockera:
sudo dnf remove -y podman buildah docker docker-client docker-client-latest \
docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-engine
Jeśli później będziesz chciał wrócić do Podmana, zawsze możesz zainstalować go ponownie.
2. Dodanie oficjalnego repozytorium Docker
Docker nie udostępnia osobnej konfiguracji repozytorium dla Rocky Linux, ale oficjalne repo dla CentOS/RHEL działa poprawnie na Rocky 9. Najpierw zainstaluj narzędzia repozytoryjne (jeśli ich nie masz):
sudo dnf install -y yum-utils
Następnie dodaj oficjalne repozytorium Docker. W dokumentacji Rocky Linux wskazany jest wariant RHEL:
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
W wielu innych poradnikach (np. DigitalOcean) stosuje się repozytorium CentOS:
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
W praktyce oba działają na Rocky Linux 9; zalecane jest trzymanie się dokumentacji Rocky (wariant z rhel).
Dla pewności sprawdź, czy repozytorium zostało dodane:
dnf repolist | grep docker
Powinieneś zobaczyć wpis docker-ce-stable.
3. Instalacja Docker Engine na Rocky Linux 9
Gdy repozytorium Docker jest już dodane, zainstaluj Docker Engine wraz z podstawowymi komponentami:
sudo dnf -y install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
Co zawierają poszczególne pakiety:
- docker-ce – silnik Docker (daemon);
- docker-ce-cli – klient wiersza poleceń;
- containerd.io – backend do zarządzania kontenerami;
- docker-buildx-plugin – rozszerzone możliwości budowania obrazów;
- docker-compose-plugin – obsługa
docker compose(Compose v2) bez osobnego binarium.
Alternatywnie możesz zainstalować minimalny zestaw bez pluginów:
sudo dnf install -y docker-ce docker-ce-cli containerd.io
W środowiskach internetowych i hostingowych najwygodniejszy jest pełny zestaw z Compose.
Jeśli w trakcie instalacji pojawi się pytanie o zaakceptowanie klucza GPG Dockera, potwierdź import – to standardowa procedura weryfikacji repozytorium.
4. Uruchomienie i włączenie Dockera w systemd
Po instalacji uruchom usługę Dockera (daemon dockerd) i ustaw jej automatyczne włączanie po restarcie systemu:
sudo systemctl --now enable docker
Równoważnie możesz to wykonać dwiema komendami:
sudo systemctl start docker
sudo systemctl enable docker
Dla kontroli sprawdź status usługi:
systemctl status docker
Lub, bardziej zwięźle:
systemctl is-active docker
Jeśli instalacja przebiegła prawidłowo, status powinien być active (running) lub po prostu active.
5. Test działania – pierwszy kontener
Aby upewnić się, że Docker działa poprawnie, uruchom testowy kontener hello-world:
sudo docker run hello-world
Po uruchomieniu tej komendy Docker:
- pobierze obraz
hello-worldz Docker Hub (jeśli nie jest jeszcze dostępny lokalnie), - uruchomi go jako kontener,
- wyświetli komunikat potwierdzający poprawną instalację.
Jeśli zobaczysz potwierdzenie poprawnego działania, możesz mieć pewność, że:
- daemon Docker jest aktywny,
- sieć kontenerów funkcjonuje,
- pobieranie obrazów z Docker Hub działa.
6. Używanie Dockera jako zwykły użytkownik (bez sudo)
Domyślnie do uruchamiania komend Dockera wymagane są uprawnienia roota, więc musiałbyś poprzedzać wszystko sudo. Rozwiązaniem jest dodanie użytkownika do grupy docker.
6.1. Dodanie użytkownika do grupy docker
Najpierw utwórz grupę docker (jeśli jeszcze nie istnieje), a następnie dopisz do niej swojego użytkownika:
sudo groupadd docker
# jeśli grupa już istnieje, pojawi się komunikat, który można zignorować
sudo usermod -aG docker $USER
Możesz też wskazać użytkownika jawnie:
# dodaj aktualnie zalogowanego użytkownika
sudo usermod -a -G docker $(whoami)
# dodaj konkretnego użytkownika
sudo usermod -a -G docker NAZWA_UŻYTKOWNIKA
Ważne: zmiana grup wymaga ponownego zalogowania lub przeładowania grup w bieżącej sesji. Aby zadziałało od razu, użyj:
newgrp docker
6.2. Test uruchamiania bez sudo
Sprawdź, czy możesz wykonywać polecenia Dockera bez sudo:
docker ps
Jeśli nie widzisz błędów typu „permission denied” lub „Cannot connect to the Docker daemon…”, a otrzymasz pustą listę (lub same nagłówki), konfiguracja uprawnień jest poprawna.
7. Podstawowa konfiguracja Dockera na Rocky Linux 9
Po instalacji i uruchomieniu Dockera warto znać kilka podstawowych elementów konfiguracji, przydatnych zwłaszcza na serwerze internetowym.
7.1. Plik konfiguracyjny daemon.json
Główny plik konfiguracyjny Dockera (daemon) na Rocky Linux znajduje się zazwyczaj w:
/etc/docker/daemon.json
Domyślnie może on nie istnieć. Możesz go utworzyć, aby skonfigurować m.in.:
- katalog z danymi (storage),
- rejestry prywatne i mirror,
- logowanie (typ, rozmiary),
- domyślny driver sieciowy czy storage.
Przykładowa, prosta konfiguracja (edytuj np. sudo nano /etc/docker/daemon.json):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
Po każdej zmianie w daemon.json zrestartuj Dockera:
sudo systemctl restart docker
7.2. Autostart i zarządzanie usługą
Najważniejsze komendy systemd dla Dockera (podsumowanie):
sudo systemctl start docker # uruchomienie
sudo systemctl stop docker # zatrzymanie
sudo systemctl restart docker # restart
sudo systemctl enable docker # włącz autostart
sudo systemctl disable docker # wyłącz autostart
sudo systemctl status docker # sprawdzenie statusu
8. Podstawowe polecenia Dockera – szybki start
Na potrzeby zastosowań internetowych (hosting, API, bazy danych) znajomość podstawowych komend Dockera jest kluczowa.
8.1. Obrazy (images)
Najczęstsze operacje na obrazach to:
- pobieranie obrazu z rejestru,
- wyświetlenie dostępnych lokalnie obrazów,
- usuwanie niepotrzebnych obrazów.
Aby pobrać obraz Rocky Linux 9, użyj:
docker pull rockylinux:9
Aby wyświetlić listę lokalnych obrazów, wpisz:
docker images
Aby usunąć obraz, użyj:
docker rmi NAZWA:TAG
8.2. Kontenery (containers)
Poniżej znajdziesz skrót najważniejszych operacji na kontenerach:
- uruchomienie kontenera – start nowego kontenera z obrazu z trybem interaktywnym;
- lista kontenerów – sprawdzenie uruchomionych lub wszystkich (także zatrzymanych);
- zarządzanie cyklem życia – zatrzymanie, ponowne uruchomienie i usunięcie kontenera.
Przykładowe polecenia:
# uruchomienie prostego kontenera
docker run --name moj-kontener -it rockylinux:9 bash
# lista uruchomionych kontenerów
docker ps
# lista wszystkich kontenerów (w tym zatrzymanych)
docker ps -a
# zatrzymanie, start i usunięcie kontenera
docker stop moj-kontener
docker start moj-kontener
docker rm moj-kontener
Najważniejsze parametry w przykładzie uruchomienia:
--name– przyjazna nazwa kontenera,-it– tryb interaktywny z przypiętym terminalem,rockylinux:9– obraz bazowy,bash– komenda startowa.
8.3. Mapowanie portów – serwis WWW w kontenerze
Aby udostępnić usługę z kontenera na zewnątrz, stosuje się przełącznik -p. Przykład: uruchomienie Nginx dostępnego na porcie 80 hosta:
docker run -d --name web -p 80:80 nginx
Co oznaczają powyższe parametry:
-d– tryb „daemon”, uruchomienie w tle,-p 80:80– mapowanie portu 80 hosta na port 80 kontenera,nginx– obraz serwera WWW (z Docker Hub).
Po tej komendzie, jeśli do serwera Rocky Linux 9 kieruje domena lub adres IP, otwórz w przeglądarce:
http://ADRES_SERWERA/
To najprostszy sposób, aby w kilka sekund wystawić serwis WWW w Dockerze.
9. Docker Compose (plugin docker compose)
Wraz z pluginem docker-compose-plugin możesz używać polecenia docker compose (bez myślnika), które jest następcą klasycznego docker-compose.
9.1. Sprawdzenie dostępności
Aby sprawdzić wersję Compose, uruchom:
docker compose version
9.2. Przykładowy plik docker-compose.yml
W katalogu roboczym (np. /opt/projekt-www) utwórz strukturę plików i plik Compose:
mkdir -p /opt/projekt-www
cd /opt/projekt-www
nano docker-compose.yml
Wklej prostą konfigurację dla Nginx:
services:
web:
image: nginx:latest
ports:
- "80:80"
restart: unless-stopped
Uruchom usługi w tle:
docker compose up -d
Sprawdź status usług:
docker compose ps
Aby zatrzymać i usunąć zasoby środowiska, użyj:
docker compose down
Compose doskonale sprawdza się przy złożonych środowiskach (np. Nginx + PHP-FPM + MariaDB).
10. Dodatkowe wskazówki dla serwera internetowego
10.1. Firewall i porty
Jeśli na Rocky Linux 9 używasz firewalld, upewnij się, że otworzyłeś odpowiednie porty (HTTP/HTTPS):
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Docker konfiguruje trasowanie i iptables, ale firewall hosta nadal może blokować ruch z zewnątrz.
10.2. Przechowywanie danych (volumes)
Dla usług internetowych (np. CMS, bazy danych) trzymaj dane poza kontenerem – w wolumenach. Przykład uruchomienia MariaDB z wolumenem danych:
docker run -d --name db \
-e MYSQL_ROOT_PASSWORD=superhaslo \
-v /opt/mysql-data:/var/lib/mysql \
mariadb:latest
Parametr -v /opt/mysql-data:/var/lib/mysql przechowuje dane bazy na dysku hosta, dzięki czemu restart lub odtworzenie kontenera nie usuwa danych.
11. Rozwiązywanie typowych problemów
11.1. „Cannot connect to the Docker daemon”
Jeśli po dodaniu użytkownika do grupy docker dostajesz błąd uprawnień, wykonaj:
-
Sprawdź, czy użytkownik jest w grupie docker:
idWśród grup powinna widnieć
docker. -
Ponownie się zaloguj lub użyj:
newgrp docker -
Sprawdź, czy usługa Docker działa:
systemctl status docker
11.2. Konflikty pakietów przy instalacji
Jeśli podczas dnf install docker-ce ... pojawiają się konflikty z Podman lub starymi pakietami Docker, wróć do kroku 1.2 i upewnij się, że wszystko zostało usunięte. W skrajnych przypadkach możesz użyć parametrów:
sudo dnf -y install docker-ce --nobest
sudo dnf install docker-ce --allowerasing -y








