Docker – Przewodnik na start
Docker to platforma umożliwiająca uruchamianie aplikacji w odizolowanych kontenerach. Zamiast instalować oprogramowanie bezpośrednio na serwerze, umieszcza się je wraz ze wszystkimi zależnościami w kontenerze, który działa w identyczny sposób w każdym środowisku. Ten serwer jest wyposażony w Docker Engine, Docker Compose oraz Portainera – webowy interfejs do zarządzania kontenerami bez korzystania z wiersza poleceń.
Krok 1 – Sprawdź, czy Portainer działa
Adres IP serwera oraz hasło użytkownika root znajdziesz w sekcji Informacje o serwerze na karcie Przegląd w panelu klienta. Portainer uruchamia się automatycznie podczas pierwszego uruchomienia serwera. Otwórz przeglądarkę i przejdź pod adres:
https://adres.ip.serwera:9443Przeglądarka wyświetli ostrzeżenie o certyfikacie z podpisem własnym. Jest to normalne zachowanie, więc możesz bezpiecznie przejść dalej. Następnie ustaw hasło dla konta admin (minimum 12 znaków). Po zalogowaniu zobaczysz panel Portainera, z którego możesz zarządzać kontenerami, wdrażać stosy (Stacks) oraz monitorować środowisko Docker.
Jeżeli serwer znajduje się za routerem VyOS w sieci prywatnej, możesz skonfigurować przekierowanie portów (22 dla SSH, 9443 dla Portainera oraz portów używanych przez kontenery) albo połączyć się przez VPN i korzystać z prywatnego adresu IP serwera.
Limit czasu konfiguracji Portainera
Ze względów bezpieczeństwa Portainer daje 5 minut na ustawienie hasła od momentu uruchomienia kontenera. Jeżeli zobaczysz komunikat „Your Portainer instance timed out”, połącz się z serwerem przez SSH i uruchom ponownie kontener:
ssh root@adres.ip.serwera docker restart portainerNastępnie ponownie otwórz https://adres.ip.serwera:9443 i utwórz hasło.
Krok 2 – Połącz się przez SSH
Aby zarządzać Dockerem z poziomu wiersza poleceń, połącz się z serwerem przez SSH:
ssh root@adres.ip.serweraSprawdź, czy Docker działa poprawnie:
docker –version docker compose version docker run hello-worldJeżeli zobaczysz komunikat „Hello from Docker!”, oznacza to, że Docker działa prawidłowo.
Krok 3 – Uruchamianie kontenerów
Uruchom kontener z dowolnego obrazu dostępnego w Docker Hub:
# Uruchom serwer WWW Nginx na porcie 80 docker run -d –name webserver -p 80:80 nginx # Wyświetl uruchomione kontenery docker ps # Zatrzymaj i usuń kontener docker stop webserver docker rm webserverKrok 4 – Docker Compose
Docker Compose pozwala definiować aplikacje składające się z wielu kontenerów za pomocą pliku YAML. Poniższy przykład uruchamia serwer Nginx oraz bazę danych MySQL:
mkdir ~/myapp && cd ~/myapp cat > docker-compose.yml <<’EOF’ services: web: image: nginx:alpine ports: – „80:80” volumes: – ./html:/usr/share/nginx/html depends_on: – db db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: changeme MYSQL_DATABASE: myapp volumes: – db_data:/var/lib/mysql volumes: db_data: EOF docker compose up -dPrzydatne polecenia Docker Compose:
# Wyświetl logi docker compose logs -f # Zatrzymaj usługi docker compose down # Zatrzymaj usługi i usuń wolumeny (usuwa dane!) docker compose down -vPo instalacji
Miejsce na dysku
Obrazy Dockera mogą szybko zajmować przestrzeń dyskową, dlatego warto regularnie kontrolować jej wykorzystanie:
# Sprawdź całkowite wykorzystanie dysku df -h / # Sprawdź wykorzystanie miejsca przez Dockera docker system df # Usuń nieużywane obrazy, kontenery i sieci docker system prune -aAktualizacje
Aby zaktualizować Dockera, Portainera oraz pakiety systemowe:
# Zaktualizuj pakiety systemowe oraz Dockera apt update && apt upgrade -y # Zaktualizuj Portainera do najnowszej wersji docker stop portainer docker rm portainer docker pull portainer/portainer-ce:latest docker run -d –name portainer –restart=always \ -p 9443:9443 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latestZapora sieciowa
Porty SSH (22) oraz Portainera (9443) są domyślnie otwarte. Gdy publikujesz porty kontenerów (np. -p 80:80), stają się one dostępne z Internetu.
Aby sprawdzić, które porty udostępniają uruchomione kontenery:
docker ps –format „table {{.Names}}\t{{.Ports}}”Fail2Ban – ochrona przed atakami brute-force
Na serwerze jest już skonfigurowany Fail2Ban, który chroni usługę SSH przed próbami odgadywania haseł metodą brute-force.
| Reguła | Maksymalna liczba prób | Czas blokady |
|---|---|---|
| SSH | 5 nieudanych logowań | 10 minut |
Przydatne polecenia:
# Sprawdź zablokowane adresy IP fail2ban-client status sshd # Usuń blokadę adresu IP fail2ban-client set sshd unbanip 1.2.3.4Jeżeli przypadkowo zablokujesz własny adres IP, połącz się z serwerem przez konsolę VNC dostępną w panelu klienta i usuń blokadę.
Zarządzanie usługą Docker
Docker działa jako usługa systemd. Najczęściej używane polecenia:
# Sprawdź status usługi systemctl status docker # Uruchom ponownie Dockera systemctl restart docker # Wyświetl logi Dockera journalctl -u docker -fDane dostępowe do serwera
Hasło administratora Portainera to hasło ustawione podczas pierwszego logowania pod adresem https://adres.ip.serwera:9443. Sam Docker nie posiada oddzielnych danych logowania – dostęp jest kontrolowany przez konto root na serwerze.
Zainstalowane oprogramowanie
| Komponent | Wersja |
|---|---|
| Ubuntu | 24.04 LTS |
| Docker CE | 29.3.0 |
| Docker Compose | 5.1.0 |
| Docker Buildx | 0.31.1 |
| containerd | 2.2.2 |
| Portainer CE | 2.39.0 |
| Fail2Ban | 1.0.2 |
Rozwiązywanie problemów
| Problem | Rozwiązanie |
|---|---|
| Portainer wyświetla komunikat „timed out” | Połącz się przez SSH i wykonaj docker restart portainer, następnie ponownie otwórz https://IP:9443. |
| Nie można połączyć się z Docker Daemon | Docker mógł się jeszcze nie uruchomić. Wykonaj systemctl start docker. |
| Kontener nie ma dostępu do Internetu | Uruchom ponownie sieć Dockera: systemctl restart docker. |
| Port jest już używany | Sprawdź, który proces go wykorzystuje: ss -tlnp | grep :80. |
| Brak miejsca na dysku | Usuń nieużywane zasoby: docker system prune -a, a następnie sprawdź wolne miejsce poleceniem df -h /. |
| Zapomniane hasło administratora Portainera | Usuń dane Portainera: docker stop portainer && docker rm portainer && docker volume rm portainer_data, a następnie utwórz kontener ponownie zgodnie z instrukcją w sekcji „Aktualizacje”. |
| Adres IP został zablokowany przez Fail2Ban | Skorzystaj z konsoli VNC dostępnej w panelu klienta, aby odblokować swój adres IP. |
| Zapomniane hasło użytkownika root | Skorzystaj z konsoli VNC w panelu klienta, aby zresetować hasło. |