Mis on Docker? Konteinerid lihtsas keeles selgitatud
Docker on tööriist, mis pakendab rakenduse koos kõigega, mida ta käivitamiseks vajab – õige keeleversiooni, teegid, süsteemitööriistad ja seaded – standardsesse üksusesse, mida nimetatakse konteineriks. Konteiner töötab samamoodi arendaja sülearvutis, testserveris või pilvehostis, mis lõpetab klassikalise probleemi „aga minu arvutis töötas". Konteineri ehitamise retsept on lühike tekstifail, mida nimetatakse Dockerfile'iks.
Miks Docker AI-ga ehitamisel oluline on
Kui su rakendusel on tagarakendus – API Pythonis, Nodes, C#-s või Javas – peab see töötama kohas, kus on täpselt õige tarkvara paigaldatud. Docker on kõige levinum viis selle korduvaks tegemiseks.
- Tagarakenduste juurutamine. Paljud hostid, sealhulgas Mythex, juurutavad tagarakendusi, ehitades Dockerfile'ist konteineri. Mythexis saad küsides „C# Web API" või „Java tagarakendus" rakenduse ja Dockerfile'i ning avaldamine ehitab pildi ja juurutab selle (API tagarakendused).
- Platvormilt lahkumine. Kui eksportid AI-ga ehitatud rakenduse, teeb Dockerfile rakenduse käivitamise teises hostis palju lihtsamaks. Vt kuidas eksportida ja ise hostida AI-ga ehitatud rakendus.
- Koostöö arendajatega. Projektiga liituv arendaja saab kogu rakenduse käivitada ühe-kahe käsuga, mitte ei kuluta päeva asjade paigaldamisele.
Igapäevane võrdlus: merekonteinerid
Enne standardseid merekonteinereid laaditi kaup tükkhaaval – kotid, tünnid, kastid – ja iga sadam käsitles seda omamoodi. Standardne terasest konteiner muutis selle: paki üks kord ja iga laev, kraana, rong või veoauto saab seda liigutada, hoolimata sellest, mis sees on.
Docker teeb sama tarkvaraga:
- Dockerfile on pakkimisloend ja juhised.
- Pilt on suletud, pakitud konteiner.
- Töötav konteiner on see kast, mis on laevale tööle pandud – siin serveris.
- Docker Engine on kraana ja laev: tarkvara serveris, mis oskab käivitada mis tahes konteinerit.
Kuidas Docker töötab
| Osa | Mis see on |
|---|---|
| Dockerfile | Tekstifail sammudega, kuidas pilt ehitada. |
| Pilt | Ainult lugemiseks pakend: operatsioonisüsteemi põhiosad, käitusaeg, teegid ja sinu kood. |
| Konteiner | Pildi töötav eksemplar, isoleeritud teistest sama masina rakendustest. |
| Register | Koht piltide hoidmiseks ja jagamiseks, näiteks Docker Hub või pilveteenuse pakkuja register. |
| Docker Engine | Taustateenus, mis ehitab pilte ja käitab konteinereid. Tasuta ja avatud lähtekoodiga. |
| Docker Desktop | Mac-, Windowsi- ja Linuxi rakendus, mis pakub Enginet graafilise liidesega. |
Konteinerid vs virtuaalmasinad: virtuaalmasin teeskleb olevat täiesti eraldi arvuti oma operatsioonisüsteemiga, seega on see raske ja aeglane käivituma. Konteiner jagab hosti operatsioonisüsteemi tuuma ja isoleerib ainult rakenduse ja selle failid, seega käivitub tavaliselt sekunditega ning kasutab palju vähem mälu. Ühel serveril saab korraga töötada palju konteinereid.
Näide: väike Pythoni API
Oletame, et su AI ehitaja lõi broneerimisrakenduse jaoks Pythoni FastAPI tagarakenduse. Dockerfile võib välja näha selline:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Rida-realt:
| Rida | Mida see teeb |
|---|---|
FROM python:3.12-slim | Alustab ametlikust pildist, kus on juba Python 3.12 paigaldatud. |
WORKDIR /app | Töötab konteineri kaustas /app. |
COPY requirements.txt . ja RUN pip install ... | Kopeerib teekide loendi ja paigaldab need. |
COPY . . | Kopeerib rakenduse enda koodi. |
EXPOSE 8000 | Märgib, et rakendus kuulab porti 8000. |
CMD [...] | Käsk, mis käivitab veebiserveri, kui konteiner töötab. |
Lihtsalt öeldes: „Alusta Python 3.12-ga. Paigalda requirements.txt failis loetletud teegid. Kopeeri sisse kood. Käivita veebiserver pordil 8000."
Arendaja (või hostiplatvorm) käivitab seejärel kaks käsku:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
Esimene ehitab pildi ja annab sellele nimeks booking-api. Teine käivitab konteineri ja ühendab masina pordi 8000 konteineri sees oleva pordiga 8000. API töötab nüüd – samamoodi nagu töötab igal serveril, kus on Docker.
Pane tähele, mida pildis ei ole: paroolid ja API-võtmed. Need antakse konteineri käivitamisel edasi keskkonnamuutujatena, nii et sama pilt saab töötada testimises ja tootmises erinevate seadetega.
Põhimõisted
| Mõiste | Tähendus |
|---|---|
| Konteiner | Isoleeritud, töötav pakend rakendusest ja selle sõltuvustest. |
| Pilt | Mall, millest konteiner käivitatakse. |
| Baaspilt | Dockerfile'i FROM rea lähtepunkt, näiteks python:3.12-slim või node:22. |
| Kiht | Iga Dockerfile'i samm lisab vahemällu salvestatud kihi, mis teeb uuesti ehitamise kiiremaks. |
| Pordi kaardistamine | Hosti pordi ühendamine konteineri sees oleva pordiga. |
| Andmemaht (volume) | Salvestusruum, mis jääb alles, kui konteiner asendatakse. Konteinerid ise on ühekordsed. |
| Docker Compose | Fail, mis kirjeldab mitut koos töötavat konteinerit, näiteks API ja andmebaasi. |
| Kubernetes | Süsteem paljude konteinerite käitamiseks paljudel serveritel. Enamik väikesi rakendusi ei vaja seda. |
Levinud väärarusaamad
- „Docker on virtuaalmasin." See on kergem: konteinerid jagavad hosti tuuma.
- „Konteineris salvestatud andmed on turvalised." Konteinerid on mõeldud ära visatavaks ja asendatavaks. Kõik, mis peab püsima – kasutajaandmed, üleslaadimised – kuulub andmebaasi, failisalvestusse või andmemahtu.
- „Saladuste panemine Dockerfile'i on okei, sest see on privaatne." Pildid jagatakse ja lükatakse registritesse. Saladused anna edasi käitamise ajal.
- „Docker teeb rakenduse turvaliseks." Isoleerimine aitab, aga konteiner, mis käitab aegunud tarkvara nõrkade seadetega, on ikka haavatav.
- „Iga rakendus vajab Dockerit." Staatiline sait või lihtne esiliides hostitakse tavaliselt tavaliste failidena, ilma konteinerita.
- „Docker Desktop on kõigile tasuta." Engine on tasuta; Docker Desktop nõuab suuremate ettevõtete jaoks Dockeri tingimuste järgi tasulist tellimust.
Mida küsida oma AI ehitajalt
- „Kas see rakendus vajab Dockerfile'i? Kui jah, selgita iga rida lihtsas keeles."
- „Kasuta väikest ametlikku baaspilti ja kinnita keeleversioon."
- „Hoia saladused pildist väljas. Loe need käitamise ajal keskkonnamuutujatest."
- „Veendu, et üleslaadimised ja andmed salvestatakse andmebaasi või failisalvestusse, mitte konteinerisse."
- „Lisa Docker Compose fail, et arendaja saaks esiliidest, API-d ja andmebaasi kohapeal ühe käsuga käivitada."
- „Lisa tervisekontrolli lõpp-punkt, et host saaks öelda, kas API töötab."
Docker Mythexis
Mythexi kasutamiseks ei pea sa Dockerit paigaldama ega käitama. Sinu projekt töötab privaatses pilveliivakastis ja kui palud tagarakendust, mis vajab konteinerit – näiteks C#, Java või kohandatud Node- või Pythoni teenust –, kirjutab Mythex rakenduse ja Dockerfile'i, kuvab selle liivakastis eelvaates ning juurutab avaldamisel, ilma et sul oleks hosting seadistada (kuidas tehnoloogia valitakse). Pro-tasemel saad projekti eksportida või sünkroonida selle GitHubiga ja viia Dockerfile'i endaga kaasa. Kuidas tagarakendused ja esiliides koos töötavad, selgitab esiliides vs tagarakendus.
Küsimused
Mis on Docker lihtsalt öeldes?
Docker on tööriist, mis pakendab rakenduse koos kõigega, mida ta käivitamiseks vajab – keeleversiooni, teegid ja seaded – standardsesse üksusesse, mida nimetatakse konteineriks. Konteiner töötab samamoodi sülearvutis, testserveris või pilvehostis.
Mis vahe on Dockeri pildil ja konteineril?
Pilt on pakendatud, ainult lugemiseks mõeldud mall: rakendus ja selle sõltuvused, mis on ehitatud Dockerfile'ist. Konteiner on selle pildi töötav koopia. Ühest pildist saab käivitada palju konteinereid.
Kas Docker on virtuaalmasin?
Ei. Virtuaalmasin jäljendab kogu arvutit oma operatsioonisüsteemiga. Konteinerid jagavad hostmasina operatsioonisüsteemi tuuma ja isoleerivad ainult rakenduse, seega käivituvad need kiiremini ja kasutavad vähem mälu.
Kas Docker on tasuta?
Docker Engine, tuum, mis konteinereid käitab, on tasuta ja avatud lähtekoodiga. Dockeri tingimuste järgi on Docker Desktop 2026. aasta septembri seisuga tasuta mittekommertsiaalsetele avatud lähtekoodiga projektidele ning ettevõtetele, kus on alla 250 töötaja ja alla 10 miljoni dollari aastakäive; suuremad ettevõtted vajavad tasulist tellimust.
Kas pean AI-ga rakenduse ehitamiseks Dockerit õppima?
Tavaliselt mitte. Paljud AI ehitajad käsitlevad konteinereid sinu eest. Abiks on teada, mis on Dockerfile, et mõista, kuidas tagarakendus on pakendatud, ja et saaksid rakenduse eksportimisel käivitada selle mujal.