Docker un docker compose uzstādīšana VPS serverī
Palaist serverī ar vienu komandu (vispirms pārbaudiet skripta saturu zemāk):
curl -sSL https://cp.lv/scripts/ustanovit-docker-vps.sh | sudo bash…vai ar wget:
wget -qO- https://cp.lv/scripts/ustanovit-docker-vps.sh | sudo bashSkripta saturs ustanovit-docker-vps.sh:
#!/usr/bin/env bash
set -e
export DEBIAN_FRONTEND=noninteractive
# 1. Veco versiju noņemšana
sudo apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true
# 2. Oficiālais Docker repozitorijs
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. Docker Engine un spraudņu uzstādīšana
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. Darbs bez sudo (stāsies spēkā pēc jaunas SSH pieteikšanās)
sudo usermod -aG docker $USER
# 5. Konteineru žurnālu izmēra ierobežojums
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. Pārbaude
sudo docker run hello-world
docker compose version
echo "Docker ir gatavs. Pieslēdzieties SSH no jauna, lai strādātu bez sudo."
Docker iepako lietotni un tās atkarības konteinerā, kas vienādi darbojas jebkurā serverī. Zemāk — Docker Engine un docker compose spraudņa uzstādīšana no oficiālā repozitorija uz Ubuntu 22.04/24.04. Neizmantojiet pakotni docker.io no standarta Ubuntu repozitorija — tā bieži ir novecojusi.
1. solis. Veco versiju noņemšana
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
sudo apt update
2. solis. Oficiālā Docker repozitorija pievienošana
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
3. solis. Docker Engine un spraudņu uzstādīšana
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin -y
Ieslēdziet automātisko startu un pārbaudiet darbību:
sudo systemctl enable --now docker
sudo docker run hello-world
Ja parādījās «Hello from Docker!», dzinējs strādā.
4. solis. Docker palaišana bez sudo
Pievienojiet savu lietotāju grupai docker, lai nerakstītu sudo pirms katras komandas:
sudo usermod -aG docker $USER
newgrp docker
docker ps
Grupas maiņa stājas spēkā pēc jaunas pieteikšanās SSH sesijā.
5. solis. docker compose pārbaude
Mūsdienu Docker versijās compose ir apakškomanda, nevis atsevišķs binārais fails:
docker compose version
Izveidojiet vienkāršu steku. Fails docker-compose.yml:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
restart: unless-stopped
volumes:
- ./site:/usr/share/nginx/html:ro
Palaišana un pārbaude:
mkdir site && echo "<h1>It works</h1>" > site/index.html
docker compose up -d
curl http://localhost:8080
Steka apturēšana un dzēšana:
docker compose down
Noderīgas ikdienas komandas
| Uzdevums | Komanda |
|---|---|
| Konteineru saraksts | docker ps -a |
| Servisa žurnāli | docker compose logs -f web |
| Atjaunināt attēlus | docker compose pull && docker compose up -d |
| Iztīrīt lieko | docker system prune -a |
| Diska izlietojums | docker system df |
Atjaunināšana un drošība
- Ierobežojiet žurnālu izmēru, lai konteineri neaizpildītu disku. Atveriet failu
/etc/docker/daemon.jsonredaktorā:
sudo nano /etc/docker/daemon.json
Faila saturs:
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
Vai arī izveidojiet failu uzreiz ar vienu komandu — nokopējiet un ielīmējiet konsolē:
sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF
Pēc labošanas: sudo systemctl restart docker.
- Nepublicējiet datubāzu portus uz āru (
5432,3306) bez vajadzības — atstājiet tos compose iekšējā tīklā. - Regulāri atjauniniet attēlus: ievainojamības visbiežāk ir novecojušās versijās.
Biežākie jautājumi
Ar ko docker-compose atšķiras no docker compose?
Vecais docker-compose (ar defisi) ir atsevišķs Python binārais fails v1, kuram atbalsts ir pārtraukts. Jaunais docker compose (spraudnis v2) tiek uzstādīts kopā ar dzinēju un ir ieteicamais variants.
Vai Docker vajag swap? Serverī ar nelielu RAM apjomu swap palīdz pārciest attēlu būvēšanas slodzes pīķus. Parasti pietiek ar 1–2 GB swap.
Kā automātiski palaist konteinerus pēc pārstartēšanas?
Norādiet restart: unless-stopped compose failā un pārliecinieties, ka Docker serviss ir ieslēgts: systemctl is-enabled docker.
Docker aizņēmis visu disku — kā iztīrīt?
docker system prune -a izdzēsīs neizmantotos attēlus, konteinerus un tīklus. Sējumus dzēš ar karogu --volumes (uzmanīgi ar datiem).
Docker patīk ātrs disks un atmiņas rezerve būvējumiem. Piemērotas konfigurācijas atradīsiet lapā VPS serveru noma, bet konteineru projektiem ņemiet Docker VPS.