Visas sistēmas darbojas Tavs IP: 216.73.217.36 info@cloudhosting.lv +371 66 66 29 69 Klientu zona

← Visi jautājumi

Kā instalēt Docker un Docker Compose uz Ubuntu 24.04

Šī pamācība soli pa solim parāda, kā uz Ubuntu 24.04 instalēt Docker Engine un Compose v2 spraudni no oficiālā Docker apt repozitorija: tā ir metode, ko Docker pats atbalsta un regulāri labo. Tā ir domāta ikvienam, kurš uztur savu VPS vai dedicēto serveri un grib tīru uzstādījumu bez snap pakotnēm un čaulā ielādētiem curl skriptiem. Beigās tev būs strādājošs divu konteineru steks, un tu zināsi, kur tā dati patiesībā glabājas uz diska.

Kas tev vajadzīgs pirms sākuma

Tev vajag Ubuntu 24.04 (Noble) ar lietotāju, kam ir sudo tiesības, un izejošu piekļuvi internetam. Pats Docker Engine ir viegls, bet konteineri, ko tu uz tā darbini, nav. Eksperimentiem pietiks ar 1 vCPU un 1 GB RAM, bet visam, kam jāstrādā pastāvīgi, komfortabls minimums ir 2 vCPU un 4 GB RAM: pietiek tīmekļa lietotnei, datubāzei un laiku pa laikam arī attēla būvēšanai bez swap lietošanas. Ieplāno vismaz 20 GB diska, jo attēli un būvēšanas kešatmiņa uzkrājas ātrāk, nekā vairums cilvēku gaida.

Ja uz servera kādreiz ir bijušas neoficiālas Docker pakotnes, vispirms noņem tās, lai tās nekonfliktē ar oficiālajām:

sudo apt remove docker.io docker-doc docker-compose podman-docker containerd runc

Ja apt ziņo, ka neviena no tām nav instalēta, viss ir kārtībā.

Pievieno oficiālo Docker apt repozitoriju

Ubuntu paša docker.io pakotne atpaliek par vairākām versijām un neietver Compose v2. Oficiālais repozitorijs drošības labojumus saņem dažu dienu laikā pēc iznākšanas, un dēmonam, kas darbojas ar root tiesībām, tas ir svarīgi. Vispirms instalē priekšnosacījumus un Docker parakstīšanas atslēgu:

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/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Tad pievieno pašu repozitoriju un atjaunini pakotņu indeksu:

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

Instalē Docker Engine un Compose v2

Viena komanda instalē dzinēju, CLI, containerd un divus vajadzīgos spraudņus: Buildx un Compose v2.

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

Serviss startē un ieslēdzas sāknēšanā automātiski. Pārbaudi abas daļas:

sudo systemctl status docker
sudo docker run hello-world
docker compose version

hello-world konteiners lejupielādē sīku attēlu, izdrukā apstiprinājuma ziņu un beidz darbu. Ievēro, ka Compose v2 ir apakškomanda: docker compose ar atstarpi, nevis vecais binārais fails docker-compose.

Darbini Docker bez sudo

Pēc noklusējuma ar Docker soketu var sazināties tikai root. Pievieno savu lietotāju docker grupai, lai varētu iztikt bez sudo prefiksa:

sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

newgrp piemēro grupu pašreizējā čaulā; jaunas SSH sesijas to paņems automātiski. Viens godīgs brīdinājums: dalība docker grupā praktiski nozīmē root piekļuvi šai mašīnai, jo konteiners var piemontēt resursdatora failu sistēmu. Pievieno tikai kontus, kuriem tu uzticētu root.

Reālistisks Compose fails: tīmekļa lietotne plus datubāze

Compose apraksta vairāku konteineru steku vienā YAML failā. Šeit ir mazs, bet produkcijai līdzīgs piemērs: WordPress ar MariaDB aizmugurē, katrs savā konteinerā, ar pastāvīgiem nosauktiem datu sējumiem (volumes).

mkdir -p ~/myapp
cd ~/myapp
nano docker-compose.yml
services:
  web:
    image: wordpress:6.5
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wp
      WORDPRESS_DB_PASSWORD: change-me
    depends_on:
      - db
    volumes:
      - wp_data:/var/www/html
    restart: unless-stopped

  db:
    image: mariadb:11
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wp
      MARIADB_PASSWORD: change-me
      MARIADB_ROOT_PASSWORD: change-me-too
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  wp_data:
  db_data:

web konteiners datubāzi sasniedz vienkārši pēc resursdatora vārda db: Compose abus servisus ievieto privātā tīklā ar DNS. Startē un apskati steku:

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

docker compose down apstādina un noņem konteinerus, bet sējumus saglabā, tāpēc tavi dati pārdzīvo restartus un attēlu atjauninājumus.

Kur tavi dati patiesībā glabājas

Nosauktie sējumi ir Docker pārvaldītas direktorijas zem /var/lib/docker/volumes/. Piemēram, iepriekšējam stekam:

docker volume ls
docker volume inspect myapp_db_data

Viss, kas konteinerī tiek ierakstīts ārpus sējuma, pazūd, kad konteineru noņem. Divi noteikumi novērš lielāko daļu datu zudumu:

  • Datubāzes un augšupielādētos failus vienmēr liec uz nosauktiem sējumiem vai bind montējumiem.
  • Nekad neizpildi docker compose down -v uz labu laimi: karogs -v kopā ar konteineriem izdzēš arī sējumus.

Rezerves kopijām izmanto datubāzes ražotāja rīku (piemēram, mariadb-dump, ko izpildi caur docker compose exec db), nevis kopē strādājošas datubāzes failus.

Tīrīšana, resursu izmēri un nākamie soļi

Veci attēli, apturēti konteineri un būvēšanas kešatmiņa klusi ēd disku. Regulāri pārbaudi lietojumu un iztīri:

docker system df
docker system prune
docker system prune -a

Vienkāršs prune noņem apturētus konteinerus, bezsaimnieka attēlus un nelietotus tīklus. Variants ar -a izdzēš arī visus attēlus, ko nelieto neviens strādājošs konteiners, tāpēc nākamajā izvietošanā tie būs jālejupielādē no jauna. Sējumus neviena no šīm komandām neaiztiek, ja vien tu pats nepieliec --volumes, tāpēc pret šo karogu izturies tikpat piesardzīgi kā pret down -v.

Par izmēriem: augstāk aprakstītais steks miera stāvoklī patērē aptuveni 500 MB RAM, un mazus Docker serverus parasti nobeidz atmiņas trūkums, nevis CPU. Ja izvēlies serveri šim nolūkam, plāns ar 2 vCPU un 4 GB RAM, piemēram, mūsu NVMe VPS Rīgā, dod stekam un pašai OS vietu elpot, un vēlāk, konteineriem vairojoties, izmēru vari palielināt.

Gribi, lai to darām mēs?
VPS. NVMe virtuālie serveri, gatavi minūtes laikā.
Uzzināt vairāk

Gatavs sākt?

Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.