Table of Contents

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:9443

Przeglą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 portainer

Nastę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.serwera

Sprawdź, czy Docker działa poprawnie:

docker –version docker compose version docker run hello-world

Jeż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 webserver

Krok 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 -d

Przydatne 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 -v

Po 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 -a

Aktualizacje

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:latest

Zapora 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.4

Jeż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 -f

Dane 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.