Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Docker na VPS — instalacja, Compose i bezpieczeństwo

Opublikowano: 8 kwietnia 2026 · Kategoria: VPS i serwery

Krótka odpowiedź: Docker na VPS wymaga minimum 2 GB RAM i KVM wirtualizacji. Instalacja na Ubuntu 22.04 zajmuje kilka minut — Docker Compose v2 jest wbudowany. Dla produkcji kluczowe jest ograniczenie zasobów kontenerów i prawidłowa konfiguracja firewall.

Wymagania VPS dla Dockera

Parametr Minimum Zalecane (prod)
RAM 1 GB 2–4 GB
CPU 1 vCPU 2–4 vCPU
Dysk 20 GB SSD 40–80 GB SSD
System operacyjny Linux 64-bit Ubuntu 22.04 LTS / Debian 12
Wirtualizacja KVM lub Xen KVM (Docker wymaga izolacji kernela)
Kernel 5.4+ 6.x (Ubuntu 22.04+)
Uwaga: OpenVZ i Virtuozzo (starsze VPS) często nie obsługują Dockera ze względu na współdzielony kernel. Przed zakupem VPS sprawdź typ wirtualizacji — poszukaj virt-what lub zapytaj support dostawcy.

Instalacja Docker CE na Ubuntu 22.04

# 1. Zaktualizuj repozytoria i zainstaluj zależności
sudo apt-get update
sudo apt-get install -y ca-certificates curl

# 2. Dodaj klucz GPG Dockera
sudo install -m 0755 -d /etc/apt/keyrings
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

# 3. Dodaj repozytorium Docker
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. Zainstaluj Docker Engine + Compose Plugin
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

# 5. Dodaj użytkownika do grupy docker (bez sudo)
sudo usermod -aG docker $USER
newgrp docker

# 6. Weryfikacja instalacji
docker --version
docker compose version
docker run hello-world

Przykładowy docker-compose.yml dla aplikacji webowej

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
      - ./certbot/conf:/etc/letsencrypt:ro
      - ./certbot/www:/var/www/certbot:ro
    depends_on:
      - app
    restart: unless-stopped

  app:
    build: .
    expose:
      - "3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    depends_on:
      - db
    restart: unless-stopped
    mem_limit: 512m
    cpus: 1.0

  db:
    image: postgres:16-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=strongpassword
      - POSTGRES_DB=mydb
    restart: unless-stopped
    mem_limit: 256m

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    mem_limit: 128m

volumes:
  postgres_data:

Bezpieczeństwo Dockera na produkcji

Problem z firewallem — Docker i UFW

Docker domyślnie manipuluje iptables bezpośrednio, omijając reguły UFW. Jeśli wyeksponujesz port w Docker (ports: "5432:5432"), będzie dostępny publicznie mimo reguły UFW blokującej port 5432.

Rozwiązanie — binduj porty tylko na localhost:

ports:
  - "127.0.0.1:5432:5432"  # Tylko localhost, nie publicznie

Limit zasobów — obowiązkowy na shared VPS

# W docker-compose.yml
mem_limit: 512m       # Limit pamięci RAM
memswap_limit: 512m   # Wyłącz swap dla kontenera
cpus: 1.5             # Limit CPU (1.5 core)

Automatyczne aktualizacje obrazów

# Watchtower — automatyczna aktualizacja kontenerów
docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --schedule "0 0 4 * * *" --cleanup

Najczęstsze pytania

Jaki VPS potrzebuję do uruchomienia Dockera?
Minimalne wymagania: 1 GB RAM (2 GB zalecane), 20 GB SSD, Linux 64-bit (Ubuntu 22.04 LTS / Debian 12 zalecane). Dla typowego projektu webowego (Nginx + PHP-FPM + MySQL + Redis): 2 GB RAM, 40 GB SSD. Docker Engine wymaga kernela Linux 5.4+ (domyślny na Ubuntu 22.04). VPS na KVM/Xen wirtualizacji — OpenVZ może nie obsługiwać Dockera ze względu na ograniczenia kernela. Sprawdź u dostawcy VPS przed zakupem.
Jak zainstalować Docker CE na Ubuntu 22.04 LTS?
Oficjalna metoda: (1) sudo apt-get update && sudo apt-get install ca-certificates curl; (2) sudo install -m 0755 -d /etc/apt/keyrings; (3) sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc; (4) echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null; (5) sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin. Weryfikacja: docker run hello-world.
Jak bezpiecznie uruchomić Dockera na VPS produkcyjnym?
Kluczowe zasady bezpieczeństwa: (1) Nie uruchamiaj kontenerów jako root — używaj USER w Dockerfile; (2) Ogranicz zasoby: --memory=512m --cpus=1; (3) Nie eksponuj Docker socket (/var/run/docker.sock) do kontenerów bez potrzeby — to da im dostęp root do hosta; (4) Używaj sieci bridge zamiast --network=host; (5) Regularnie aktualizuj obrazy bazowe (docker pull + rebuild); (6) Firewalla: domyślnie Docker omija iptables — skonfiguruj UFW/nftables z uwzględnieniem reguł Dockera; (7) Skany bezpieczeństwa: docker scout lub trivy do skanowania obrazów.
Jak uruchomić aplikację webową przez Docker Compose?
Przykładowy docker-compose.yml dla aplikacji Node.js + PostgreSQL + Nginx: zdefiniuj services z odpowiednimi image, ports, volumes i networks. Uruchom: docker compose up -d. Sprawdź logi: docker compose logs -f. Zatrzymaj: docker compose down. Dla produkcji: dodaj restart: unless-stopped do każdego serwisu, używaj named volumes dla danych (nie bind mounts), oddziel konfiguracje dev i prod przez override files (docker-compose.override.yml).

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.