Dockeri ja docker compose'i paigaldamine VPS-i

05 Apr 2026 Autor: Olga Naumova

Käivita serveris ühe käsuga (kontrolli enne skripti sisu allpool):

curl -sSL https://cp.lv/scripts/ustanovit-docker-vps.sh | sudo bash

…või wgetiga:

wget -qO- https://cp.lv/scripts/ustanovit-docker-vps.sh | sudo bash

Skripti sisu ustanovit-docker-vps.sh:

#!/usr/bin/env bash
set -e
export DEBIAN_FRONTEND=noninteractive

# 1. Remove old versions
sudo apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true

# 2. Official Docker repository
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 3. Install Docker Engine and plugins
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker

# 4. Run without sudo (takes effect after a new SSH login)
sudo usermod -aG docker $USER

# 5. Cap container log size
sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF
sudo systemctl restart docker

# 6. Verify
sudo docker run hello-world
docker compose version
echo "Docker is ready. Log in over SSH again to use it without sudo."

Docker pakib rakenduse koos selle sõltuvustega konteinerisse, mis töötab igas serveris ühtemoodi. Allpool on Docker Engine’i ja plugina docker compose paigaldus ametlikust hoidlast Ubuntu 22.04/24.04 peale. Ära kasuta Ubuntu standardhoidla paketti docker.io — see on sageli aegunud.

Samm 1. Vanade versioonide eemaldamine

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
sudo apt update

Samm 2. Dockeri ametliku hoidla lisamine

sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

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

Samm 3. Docker Engine’i ja pluginate paigaldamine

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin -y

Luba automaatne käivitus ja kontrolli tööd:

sudo systemctl enable --now docker
sudo docker run hello-world

Kui ekraanile tuli «Hello from Docker!», siis mootor töötab.

Samm 4. Dockeri kasutamine ilma sudota

Lisa oma kasutaja gruppi docker, et mitte kirjutada iga käsu ette sudo:

sudo usermod -aG docker $USER
newgrp docker
docker ps

Grupimuudatus jõustub pärast uut sisselogimist SSH-sessiooni.

Samm 5. docker compose’i kontroll

Kaasaegses Dockeris on compose alamkäsk, mitte eraldi binaarfail:

docker compose version

Loo lihtne kooslus. Fail docker-compose.yml:

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    restart: unless-stopped
    volumes:
      - ./site:/usr/share/nginx/html:ro

Käivitamine ja kontroll:

mkdir site && echo "<h1>It works</h1>" > site/index.html
docker compose up -d
curl http://localhost:8080

Koosluse peatamine ja eemaldamine:

docker compose down

Kasulikud igapäevased käsud

Ülesanne Käsk
Konteinerite loend docker ps -a
Teenuse logid docker compose logs -f web
Tõmmiste uuendamine docker compose pull && docker compose up -d
Prügi koristamine docker system prune -a
Kettakasutus docker system df

Automaatne uuendamine ja turvalisus

  • Piira logide suurust, et konteinerid ketast täis ei kirjutaks. Ava fail /etc/docker/daemon.json redaktoris:
sudo nano /etc/docker/daemon.json

Faili sisu:

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}

Või loo kogu fail ühe käsuga — kopeeri ja kleebi konsooli:

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF

Pärast muudatust: sudo systemctl restart docker.

  • Ära avalda andmebaasi porte (5432, 3306) väljapoole ilma vajaduseta — jäta need compose’i sisevõrku.
  • Uuenda tõmmiseid regulaarselt: haavatavused on kõige sagedamini aegunud versioonides.

Korduma kippuvad küsimused

Mille poolest erineb docker-compose käsust docker compose? Vana docker-compose (sidekriipsuga) on eraldi Pythoni binaarfail v1, mille tugi on lõpetatud. Uus docker compose (plugin v2) paigaldub koos mootoriga ja on soovitatav.

Kas Docker vajab swapi? Väikese mälumahuga serveris aitab swap üle elada tõmmiste ehitamise tipud. Tavaliselt piisab 1–2 GB swapist.

Kuidas käivitada konteinerid automaatselt pärast taaskäivitust? Määra compose-failis restart: unless-stopped ja veendu, et Dockeri teenus on lubatud: systemctl is-enabled docker.

Docker täitis kogu ketta — kuidas puhastada? docker system prune -a eemaldab kasutamata tõmmised, konteinerid ja võrgud. Köited kustutatakse lipuga --volumes (ettevaatust andmetega).

Docker armastab kiiret ketast ja mäluvaru ehituste jaoks. Sobivad konfiguratsioonid on lehel VPS-i rent, konteinerprojektidele võta Dockeri VPS.

Olga Naumova