
Docker na VPS krok po kroku: instalacja, Compose i pierwsza aplikacja
Docker na własnym VPS-ie to najprostszy sposób, żeby uruchamiać kilka aplikacji obok siebie bez mieszania ich zależności. Ten poradnik prowadzi od czystego systemu do działającej aplikacji w Docker Compose. Po drodze pokazuje jedną pułapkę z firewallem, o której dokumentacja Dockera ostrzega wprost, a wielu początkujących i tak jej nie zauważa.
Jeśli zastanawiasz się jeszcze, czy VPS jest Ci w ogóle potrzebny, zajrzyj najpierw do wpisu do czego użyć serwera VPS.
Czego potrzebujesz na start
- VPS z wirtualizacją KVM. Docker potrzebuje własnego jądra i pełnej kontroli nad siecią, dlatego na KVM działa bez kombinowania. Wszystkie serwery VPS w RapidDC działają na KVM i dają pełny dostęp administracyjny.
- Debian 12 lub 13 albo aktualne Ubuntu. Oba systemy wybierzesz przy zamawianiu VPS-a w RapidDC.
- Dostęp przez SSH na koncie z uprawnieniami sudo. Jeśli logujesz się pierwszy raz, pomoże wpis jak połączyć się z serwerem VPS przez SSH.
Ile zasobów? Sam Docker zużywa niewiele. Liczy się to, co w nim uruchomisz. Do nauki i jednej lekkiej aplikacji wystarczy mały plan. Kilka usług z bazą danych szybciej zje RAM i dysk. Przy takich projektach lepiej sprawdzi się linia VPS NVMe na procesorach AMD EPYC. Plan Light ma 1 vCPU, 2 GB RAM i 20 GB NVMe, a plan Rapid 2 vCPU, 4 GB RAM i 50 GB NVMe. Liczbę rdzeni i ilość RAM w VPS-ie RapidDC można zmienić na każdym etapie, więc nie musisz trafić z rozmiarem za pierwszym razem.
Krok 1: zainstaluj Dockera z oficjalnego repozytorium
Pakiet docker.io z repozytorium systemu bywa starszy niż wydania Dockera. Dlatego instalujemy z repozytorium Dockera, dokładnie tak, jak opisuje to dokumentacja projektu dla Debiana.
Najpierw klucz i źródło pakietów:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Na Ubuntu zamień debian na ubuntu w obu adresach. Potem sama instalacja:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Sprawdź, czy działa:
sudo systemctl status docker
sudo docker run hello-world
Jeśli zobaczysz komunikat powitalny, Docker pobrał obraz i uruchomił kontener.
Docker bez sudo? Z głową
Polecenie sudo usermod -aG docker $USER pozwala używać Dockera bez sudo. Pamiętaj jednak, że członek grupy docker ma w praktyce uprawnienia roota na serwerze. Dodawaj do niej tylko własne konto administracyjne, nigdy konta aplikacji czy współpracowników, którzy nie powinni mieć pełnego dostępu.
Krok 2: pierwsza aplikacja w Docker Compose
Pojedyncze polecenia docker run szybko robią się nieczytelne. Docker Compose zapisuje całą konfigurację w jednym pliku, który możesz trzymać w repozytorium i odtworzyć na innym serwerze.
Na przykład uruchomimy Uptime Kuma, lekkie narzędzie do monitorowania stron. Utwórz katalog i plik compose.yaml:
mkdir -p ~/apps/uptime-kuma && cd ~/apps/uptime-kuma
nano compose.yaml
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
Uruchom i sprawdź stan:
docker compose up -d
docker compose ps
docker compose logs -f
Trzy linijki w tym pliku robią ważną robotę. restart: unless-stopped podnosi kontener po restarcie serwera. Wolumen ./data trzyma dane poza kontenerem, więc usunięcie i odtworzenie kontenera ich nie kasuje. A zapis 127.0.0.1:3001:3001 zamiast samego 3001:3001 to temat następnego kroku.
Krok 3: nie wystawiaj portów obok firewalla
To najczęstszy błąd przy Dockerze na VPS-ie. Włączasz UFW, blokujesz wszystko poza SSH, a panel aplikacji i tak otwiera się z internetu. Dokumentacja Dockera mówi to wprost: porty kontenerów wystawione przez Dockera omijają reguły ufw i firewalld, bo Docker sam dopisuje swoje reguły do iptables. Ta sama dokumentacja zaznacza, że reguły tworzone przez nft nie są wspierane na systemie z Dockerem.
Co z tym zrobić:
- Wiąż porty z
127.0.0.1, jak w przykładzie wyżej. Usługa jest wtedy dostępna tylko z samego serwera. - Do panelu wchodź przez tunel SSH. Na swoim komputerze uruchom
ssh -L 3001:127.0.0.1:3001 uzytkownik@IP_SERWERAi otwórz w przeglądarcehttp://localhost:3001. - Publiczne usługi wystawiaj przez reverse proxy (Nginx, Caddy, Traefik) z certyfikatem SSL na portach 80 i 443, a aplikacje za nim zostaw na
127.0.0.1.
Więcej o tym, co firewall robi, a czego nie, znajdziesz we wpisie czym jest zapora sieciowa i czy musisz ją mieć.
Krok 4: ogranicz logi, zanim zapchają dysk
Domyślnie Docker zapisuje logi kontenerów w plikach JSON bez limitu rozmiaru. Gadatliwa aplikacja potrafi po kilku tygodniach zająć sporą część małego dysku. Utwórz plik /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Następnie sudo systemctl restart docker. Ustawienie obejmuje kontenery tworzone od tej chwili, więc istniejące odtwórz poleceniem docker compose up -d --force-recreate.
Miejsce zajmowane przez obrazy, kontenery i wolumeny sprawdzisz poleceniem docker system df.
Krok 5: aktualizacje i kopie zapasowe
Aktualizacja aplikacji z Compose to dwa polecenia w katalogu projektu:
docker compose pull
docker compose up -d
docker image prune
Ostatnie usuwa stare, nieużywane obrazy, które po aktualizacjach zostają na dysku.
Przy backupie pamiętaj, że kontener jest jednorazowy, a wartość mają dane. Kopiuj katalogi wolumenów (w przykładzie ~/apps/uptime-kuma/data) i pliki compose.yaml. Bazy danych zrzucaj ich własnymi narzędziami, na przykład mysqldump albo pg_dump, zamiast kopiować pliki działającej bazy. Kopię trzymaj poza serwerem. W RapidDC możesz dokupić do VPS-a plan backupu, od Backup.Standard do Backup.Mega.
Jeśli planujesz na tym samym VPS-ie testować nowe wersje aplikacji, rozważ osobne środowisko. Piszemy o tym we wpisie VPS dla środowiska testowego.
Podsumowanie
Docker na VPS-ie to pięć kroków: instalacja z oficjalnego repozytorium, aplikacja opisana w compose.yaml, porty przypięte do 127.0.0.1 lub schowane za reverse proxy, limit logów i regularny backup wolumenów. Jeśli zrobisz tylko jedną rzecz z tej listy ponad instalację, niech to będzie krok 3.
Potrzebujesz serwera pod kontenery? Sprawdź serwery VPS NVMe w RapidDC z procesorami AMD EPYC i darmową, nielimitowaną reinstalacją systemu. Na plany Rapid i Hyper działa teraz kod PROMONVME20, który obniża cenę o 20% w pierwszym okresie rozliczeniowym. Aktualne kody znajdziesz na stronie promocji.
FAQ – najczęściej zadawane pytania o Dockera na VPS
Czy na VPS-ie w RapidDC mogę zainstalować Dockera?
Tak. VPS-y RapidDC działają na wirtualizacji KVM i dają pełny dostęp administracyjny, więc Dockera instalujesz tak samo jak na fizycznym serwerze z Debianem lub Ubuntu. Instalację najlepiej przeprowadzić z oficjalnego repozytorium Dockera.
Dlaczego mój kontener jest dostępny z internetu, mimo że UFW blokuje port?
Docker dopisuje własne reguły iptables dla wystawionych portów, więc omijają one reguły ufw. Przypnij port do adresu 127.0.0.1 w pliku compose.yaml, a publiczne usługi wystaw przez reverse proxy na portach 80 i 443.
Ile RAM potrzebuje VPS pod Dockera?
Sam Docker zużywa niewiele, więc decyduje suma aplikacji, które uruchomisz. Do nauki i jednej lekkiej usługi wystarczy mały plan. Przy kilku kontenerach z bazą danych wybierz więcej pamięci. W RapidDC ilość RAM i rdzeni można zwiększyć w dowolnym momencie.
Czy dane znikną, gdy usunę kontener?
Znikną, jeśli trzymasz je wewnątrz kontenera. Dlatego dane aplikacji zapisuj w wolumenach lub katalogach podpiętych z serwera, jak ./data w przykładzie z poradnika. Takie katalogi przetrwają usunięcie i ponowne utworzenie kontenera.
Docker Compose czy pojedyncze polecenia docker run?
Na serwerze lepiej sprawdza się Docker Compose. Cała konfiguracja jest w jednym pliku, który łatwo wersjonować, skopiować na inny VPS i odtworzyć jednym poleceniem docker compose up -d.
Artykuł powstał z wykorzystaniem narzędzi sztucznej inteligencji (AI) pod nadzorem zespołu RapidDC. Grafika ilustracyjna została wygenerowana przez AI.
