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 -vuz labu laimi: karogs-vkopā 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.
Gatavs sākt?
Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.