Poradnik

Docker na VPS — co to jest i jak zainstalować

Kontenery zamiast ręcznego składania stosu. Instalacja na Ubuntu i Debianie, Compose i zapora.

Docker pakuje program razem z bibliotekami w kontener. Na VPS uruchamiasz ten sam obraz, który działa u Ciebie na laptopie. To nie jest osobna maszyna wirtualna — korzysta z jądra Twojego systemu. Mniej narzutu, szybszy start, łatwiejsza aktualizacja.

Na hostingu WWW Dockera nie stawiasz. Tam dostajesz stronę. Docker ma sens na VPS z rootem.

Co zyskujesz

  • Powtarzalność. docker compose up stawia aplikację, bazę i proxy bez ręcznego apt na każdym pakiecie.
  • Izolacja. Aplikacja nie nadpisuje systemowych bibliotek. Druga usługa może mieć inną wersję PHP albo Node.
  • Porządek. Logi, restart i limit RAM ustawiasz w jednym pliku, nie w pięciu jednostkach systemd.

Czego Docker nie robi: nie zastępuje zapory, kopii zapasowej ani aktualizacji systemu. Obraz z dziurą nadal jest dziurą.

Instalacja na Ubuntu i Debianie

Zaloguj się na VPS (login i hasło są w panelu) i zainstaluj pakiety z repozytorium dystrybucji:

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
sudo docker run --rm hello-world

Jeśli widzisz komunikat od hello-world, silnik działa.

Żeby nie pisać sudo przy każdym docker, dodaj swoje konto do grupy i wyloguj się, potem zaloguj ponownie:

sudo usermod -aG docker "$USER"

Na małym planie (VX11 / VX21) jeden stos — aplikacja plus baza — zwykle wystarcza. Baza i Redis obok ciężkiej aplikacji szybciej zjedzą RAM niż vCPU.

Compose zamiast pojedynczych poleceń

Plik compose.yml opisuje cały zestaw. Przykład z Nginxem na porcie 80:

services:
  www:
    image: nginx:alpine
    ports:
      - "80:80"
    restart: unless-stopped

W katalogu z tym plikiem:

docker compose up -d
docker compose ps
docker compose logs -f

Zatrzymanie: docker compose down. Dane, które mają przeżyć restart, trzymaj w wolumenie albo w katalogu na dysku NVMe — nie w efemerycznej warstwie kontenera.

Zapora: port w Dockerze to nie to samo co wejście z internetu

ports: "80:80" otwiera nasłuch na serwerze. Na VPS b00ber zapora na starcie puszcza logowanie, reszta jest zamknięta. Wejście na stronę musisz otworzyć sam. Najpierw zobacz, co już jest w regułach:

sudo nft list ruleset

Dopuść HTTP i HTTPS, potem zapisz zestaw do /etc/nftables.conf, żeby przeżył restart. Szczegóły: Zapora od startu.

Nie wystawiaj na świat portu 2375 ani gniazda Dockera. Kto ma dostęp do Dockera, ten ma de facto root.

Dobre nawyki

  1. Obrazy z zaufanego rejestru, pin wersji (nginx:1.27, nie nginx:latest na produkcji).
  2. restart: unless-stopped, żeby usługa wracała po rebootcie VPS.
  3. Limit pamięci w Compose (mem_limit), zwłaszcza na VX11.
  4. Baza nie słucha 0.0.0.0 — tylko sieć wewnętrzna Compose.
  5. docker system prune od czasu do czasu, żeby stare obrazy nie zjadały NVMe.

W skrócie

Docker to powtarzalne kontenery na Twoim VPS, nie magia. Instalacja: docker.io i Compose, test hello-world, otwarte tylko te wejścia, których używasz. Hosting WWW zostaw na strony bez Dockera. VPS — gdy chcesz cały stos pod sobą.

Wszystkie artykuły