HELPER VPS

Instalacja Dockera na VPS: Ubuntu, Debian, AlmaLinux i Compose

Instalując z oficjalnego repozytorium Dockera, dostajesz aktualny Docker Engine i wtyczkę Compose, a kolejne aktualizacje przychodzą razem ze zwykłą aktualizacją systemu. Poniżej po kolei zebraliśmy polecenia dla każdego systemu i ustawienia, które warto zrobić po instalacji.

Najszybszy sposób: utwórz serwer z obrazu Docker

Jeśli tworzysz nowy serwer, najszybciej wybrać Docker z listy obrazów. Serwer startuje na Ubuntu 24.04 LTS z już zainstalowanymi Docker Engine i Docker Compose, a zaraz po zalogowaniu możesz wykonać docker compose up. Opis aplikacji i zalecany rozmiar znajdziesz na stronie Docker VPS.

Jeśli chcesz dodać Dockera do już działającego serwera albo użyć innego systemu, na przykład Debian lub AlmaLinux, zainstaluj go ręcznie według kroków poniżej. Wszystkie polecenia zakładają połączenie jako root. Jeśli zalogowałeś się jako zwykły użytkownik, dodawaj przed poleceniami sudo.

Co sprawdzić przed instalacją

Docker działa na serwerach dowolnej wielkości. Do osobistych projektów z kilkoma kontenerami wystarczy najmniejszy plan ogólny z 12 GB pamięci; aby uruchomić bazę danych, serwer WWW i cache razem, 24 GB lub więcej zapewni Ci miejsce. Jeśli często pobierasz i budujesz obrazy, NVMe VPS z szybkim dyskiem robi zauważalną różnicę.

Jeśli w systemie są stare pakiety Dockera z repozytorium systemu, najpierw je usuń, aby nie mieszały się z oficjalnymi. Niezainstalowane pakiety są po prostu pomijane, więc polecenie możesz wykonać bez zmian.

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Instalacja Dockera na Ubuntu 24.04

Krok 1. Dodaj klucz i adres repozytorium

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
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" > /etc/apt/sources.list.d/docker.list

Krok 2. Zainstaluj Docker Engine i Compose

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Po instalacji usługa Docker uruchamia się automatycznie i startuje razem z serwerem po restarcie. Te same polecenia działają też w Ubuntu 22.04 i 26.04. Nazwa wersji w adresie repozytorium jest pobierana automatycznie z /etc/os-release.

Instalacja Dockera na Debian 13

W Debianie kolejność jest taka sama jak w Ubuntu, zmienia się tylko adres repozytorium na linux/debian. Te same polecenia działają też w Debian 12.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Instalacja Dockera na AlmaLinux 10

AlmaLinux i Rocky Linux korzystają z repozytorium Dockera dla RHEL. Aby nie było konfliktu z wbudowanym Podmanem, najpierw go usuń, a potem zainstaluj Dockera. Te same polecenia działają w AlmaLinux 9 oraz Rocky Linux 9 i 10.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Jeśli przy pierwszej instalacji pojawi się pytanie o akceptację klucza podpisu repozytorium, naciśnij y. W systemach z rodziny RHEL usługa nie uruchamia się automatycznie po instalacji, dlatego ostatnia linia systemctl enable --now docker włącza ją teraz i przy starcie systemu.

Sprawdzenie instalacji i pierwszy kontener

Uruchom kontener testowy poleceniem poniżej. Jeśli pojawi się komunikat zaczynający się od Hello from Docker, silnik, pobieranie obrazów i uruchamianie kontenerów działają. Z flagą --rm kontener jest usuwany zaraz po zakończeniu.

Terminal
docker run --rm hello-world
docker compose version

Jeśli chcesz używać Dockera jako zwykły użytkownik, dodaj go do grupy docker i zaloguj się ponownie. Grupa docker daje uprawnienia równe root, więc dodawaj tylko zaufanych użytkowników.

Terminal
usermod -aG docker username

Uruchamianie usług przez Docker Compose

Compose pozwala opisać ustawienia kontenerów w jednym pliku YAML i uruchomić je jednym poleceniem. Przy przenosinach lub tworzeniu nowego serwera ten sam plik odtwarza to samo środowisko. Na przykład plik dla jednego serwera WWW Nginx wygląda tak.

Terminal
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

Otwórz w przeglądarce http://YOUR_SERVER_IP, a pojawi się strona Nginx. Jeśli umieścisz index.html w folderze html, wyświetli się ten plik. Z często używanych poleceń wystarczą cztery.

  • docker compose ps: pokazuje działające kontenery i ich porty.
  • docker compose logs -f: pokazuje logi na żywo. Wyjście przez Ctrl+C.
  • docker compose pull && docker compose up -d: pobiera nowe obrazy i aktualizuje kontenery do nowej wersji.
  • docker compose down: zatrzymuje i usuwa kontenery. Dane w wolumenach zostają.

Jeśli wpiszesz restart: unless-stopped, kontenery same wstaną po restarcie serwera. Zatrzymane pozostaną tylko te, które zatrzymałeś sam.

Zapora i publikowanie portów

Docker sam dodaje porty opublikowane przez ports: do reguł zapory (iptables) i je otwiera. Dlatego port wpisany w ports: jest dostępny z zewnątrz, nawet jeśli nie zezwolono na niego w ufw. Bazy danych i panele zarządzania, których nie trzeba pokazywać na zewnątrz, przypnij tylko do 127.0.0.1, jak poniżej, a będą dostępne tylko z wnętrza serwera.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

Wygodnie jest otwierać dla usług WWW tylko porty 80 i 443, a pozostałe usługi niech łączą się ze sobą po nazwie w jednej sieci Compose. Podstawową zaporę całego serwera skonfiguruj według poradnika podstawowej zapory i otwórz tylko SSH, HTTP i HTTPS.

Zarządzanie logami i dyskiem

Jeśli niczego nie ustawisz, logi kontenerów rosną bez ograniczeń. Ustaw sterownik logów local w /etc/docker/daemon.json, jak poniżej, a logi będą kompresowane i przechowywane tylko w ustalonej ilości. Po zapisaniu wykonaj systemctl restart docker: ustawienie zadziała dla nowych kontenerów.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

Nieużywane obrazy i zatrzymane kontenery też zajmują miejsce na dysku. Sprawdź zajętość poleceniem docker system df i usuń nieużywane obrazy poleceniem docker image prune -a. Gdy danych przybywa, możesz podłączyć do serwera dysk blokowy NVMe i używać go jako folderu danych Dockera.

Ochrona danych i kolejne kroki

Kontener możesz w każdej chwili usunąć i utworzyć ponownie, ale danych w wolumenach nie odtworzysz. Regularnie rób zrzut bazy danych, a cały serwer chroń automatycznymi kopiami zapasowymi lub migawkami. Jak to zrobić, opisuje poradnik kopii zapasowych i migawek.

Plik Compose do uruchomienia WordPressa w Dockerze znajdziesz w poradniku instalacji WordPressa. Jeśli chcesz wdrażać wiele aplikacji przez interfejs WWW i automatycznie dostawać certyfikaty HTTPS, utwórz serwer z obrazu Coolify lub Dokploy. Rozmiary dobre do pracy z kontenerami zebraliśmy na stronie kontenerowy VPS.

Przydatne poradniki na ten temat

Ustawienia, które warto zrobić po tym poradniku.

Wszystkie poradniki