Docker
Docker on tööriist, mis võimaldab sul käitada rakendusi isoleeritud konteinerites.
Miks see kasulik on?
- Platvormi sõltumatus – rakendus töötab ühtemoodi igal masinal.
- Kergekaalulisus – erinevalt virtuaalmasinast ei vaja täit OS-i, vaid ainult vajalikku rakendust ja sõltuvusi.
- Reprodutseeritavus – sama image tagab sama keskkonna.
Tutorial (inglise keeles): https://www.hostinger.com/tutorials/docker-tutorial
Tutorial (eesti keeles): https://github.com/adlerpriit/2025_taka_fall/blob/main/teemad/docker.md
Arenduskonteinerid (eesti keeles, VSCode näitel): https://github.com/adlerpriit/2025_taka_fall/blob/main/teemad/devcontainers.md
Dockeri kasutamise praktilised/elulised stsenaariumid
1. Arendus vs produktsioon
- Arendajad saavad kasutada sama Dockerfile'i nii arenduses kui ka produktsioonis, tagades identse tarkvarakeskkonna.
- Arenduses võib kasutada bind mount'e ja avatud porte, produktsioonis piirata ligipääsu ja kasutada optimeeritud image'eid.
2. Arenduskeskkonna ühtlustamine kogu meeskonnale
- Kõik tiimiliikmed saavad identse arenduskeskkonna sõltumata oma arvuti operatsioonisüsteemist või seadistustest.
- Uue arendaja liitumisel piisab ühest käsust (docker compose up vms), et kogu stack tööle saada.
3. Tarkvara pakendamine platvormist sõltumatult
- Docker image töötab igal masinal, kus on Docker – pole vahet, kas host on Windows, Mac või Linux.
- Lihtne tarkvara jagamine klientidele või partneritele: "käivita see image".
4. Mitme teenuse haldamine ja orkestreerimine
- Näiteks veebirakendus + andmebaas + cache – igaüks oma konteineris, suhtlevad omavahel läbi võrgu.
- Docker Compose võimaldab kogu stacki käivitada ühe käsuga.
5. Legacy tarkvara käitamine
- Vanad rakendused, mis vajavad spetsiifilist OS-i või teeke, saab isoleerida konteinerisse, vältides konflikte hosti süsteemiga.
6. Testimine ja CI/CD
- Testid saab jooksutada puhtas konteineris, vältides "minu masinas töötab" tüüpi probleeme.
- CI/CD süsteemides (nt GitHub Actions, GitLab CI) kasutatakse tihti Dockeri konteinerites buildimist ja testimist.
7. Skaalautuvus ja pilvekeskkonnad
- Konteinerid sobivad hästi automaatseks skaleerimiseks pilves (nt Kubernetes, AWS ECS).
- Sama image'it saab käivitada kümnetes või sadades koopiates vastavalt vajadusele.
8. Õpetus ja katsetamine
- Õppekeskkondades saab anda igale õppijale oma isoleeritud konteineri.
- Uute tehnoloogiate või tööriistade katsetamine ilma oma arvutit "risustamata".
9. Turvalisus ja isoleerimine
- Konteinerid võimaldavad piirata rakenduse ligipääsu hosti ressurssidele (failisüsteem, võrk).
- Võimalik jooksutada potentsiaalselt ohtlikku koodi piiratud keskkonnas.