Hvað er Docker? Gámar útskýrðir fyrir þá sem eru ekki forritarar
Docker er verkfæri sem pakkar appi ásamt öllu sem það þarf til að keyra, eins og réttri útgáfu forritunarmálsins, söfnum, kerfisverkfærum og stillingum, í staðlaða einingu sem kallast gámur (container). Gámur keyrir eins á tölvu forritara, prófunarþjóni eða skýjahýsingu, sem bindur enda á gamla vandamálið „en þetta virkaði í minni tölvu“. Uppskriftin að gerð gáma er stuttur textaskrá sem kallast Dockerfile.
Af hverju Docker skiptir máli þegar þú byggir með gervigreind
Ef appið þitt er með bakenda, API í Python, Node, C# eða Java, þarf það að keyra einhvers staðar þar sem nákvæmlega réttur hugbúnaður er uppsettur. Docker er algengasta leiðin til að gera það endurtekjanlegt.
- Birting bakenda. Margir hýsingaraðilar, þar á meðal Mythex, birta bakenda með því að smíða gám úr Dockerfile. Í Mythex fær biðjandi um „C# Web API“ eða „Java-bakenda“ appið ásamt Dockerfile, og Birta smíðar myndina og innleiðir hana (API-bakendar).
- Að yfirgefa vettvang. Ef þú flytur út app sem gervigreind smíðaði gerir Dockerfile það mun auðveldara að keyra það á öðrum hýsingaraðila. Sjá hvernig þú flytur út og hýsir sjálf(ur) app sem gervigreind smíðaði.
- Vinna með forriturum. Forritari sem gengur í verkefnið þitt getur ræst allt appið með einni eða tveimur skipunum í stað þess að eyða degi í að setja upp hluti.
Dæmisaga: flutningagámar
Áður en staðlaðir flutningagámar komu til sögunnar var farmur hlaðinn bita fyrir bita, í pokum, tunnum og kössum, og hver höfn meðhöndlaði hann á sinn hátt. Staðlaði stálgámurinn breytti því: pakkaðu honum einu sinni, og hvaða skip, krani, lest eða vörubíll sem er getur flutt hann án þess að kæra sig um hvað er inni.
Docker gerir það sama fyrir hugbúnað:
- Dockerfile er pökkunarlistinn og leiðbeiningarnar.
- Myndin er innsiglaði, pakkaði gámurinn.
- Keyrandi gámur er kassinn settur í vinnu á skipi, hér sem þjónn.
- Docker Engine er krani og skip: hugbúnaðurinn á þjóni sem kann að keyra hvaða gám sem er.
Hvernig Docker virkar
| Hluti | Hvað það er |
|---|---|
| Dockerfile | Textaskrá með skref-fyrir-skref leiðbeiningum um að smíða myndina. |
| Mynd (image) | Lesanlegur pakki: grunnur stýrikerfis, keyrsluumhverfi, söfn og kóðinn þinn. |
| Gámur (container) | Keyrandi eintak af mynd, einangrað frá öðrum öppum á sömu vél. |
| Geymsla myndar (registry) | Staður til að geyma og deila myndum, eins og Docker Hub eða geymsla skýjaveitu. |
| Docker Engine | Bakgrunnsþjónustan sem smíðar myndir og keyrir gáma. Ókeypis og opinn. |
| Docker Desktop | Forrit fyrir Mac, Windows og Linux sem pakkar vélinni með myndrænu viðmóti. |
Gámar á móti sýndarvélum: sýndarvél þykist vera heil, aðskilin tölva með eigið stýrikerfi, svo hún er þung og hæg að ræsast. Gámur deilir kjarna stýrikerfis hýsilsins og einangrar aðeins appið og skrár þess, svo hann ræsist yfirleitt á sekúndum og notar mun minna minni. Margir gámar geta keyrt hlið við hlið á sama þjóni.
Vinnudæmi: lítið Python API
Segjum að gervigreindarsmiðurinn þinn hafi smíðað Python FastAPI-bakenda fyrir bókunarapp. Dockerfile gæti litið svona út:
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"]
Lína fyrir línu:
| Lína | Hvað hún gerir |
|---|---|
FROM python:3.12-slim | Byrjar frá opinberri mynd sem er þegar með Python 3.12 uppsett. |
WORKDIR /app | Vinnur í möppunni /app inni í gámnum. |
COPY requirements.txt . og RUN pip install ... | Afritar listann yfir söfn og setur þau upp. |
COPY . . | Afritar kóða appsins sjálfs. |
EXPOSE 8000 | Skráir að appið hlustar á gátt 8000. |
CMD [...] | Skipunin sem ræsir vefþjóninn þegar gámurinn keyrir. |
Á einföldu máli: „Byrjaðu á Python 3.12. Settu upp söfnin sem eru skráð í requirements.txt. Afritaðu kóðann inn. Ræstu vefþjóninn á gátt 8000.“
Forritari (eða hýsingarvettvangur) keyrir síðan tvær skipanir:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
Fyrri skipunin smíðar myndina og nefnir hana booking-api. Sú seinni ræsir gám og tengir gátt 8000 á vélinni við gátt 8000 inni í gámnum. API-ið keyrir nú, eins og það gerir á hverjum þjóni sem er með Docker.
Taktu eftir hvað er ekki í myndinni: lykilorð og API-lyklar. Þeim er komið fyrir þegar gámurinn ræsist, sem umhverfisbreytur, svo sama myndin geti keyrt í prófunum og framleiðslu með mismunandi stillingum.
Lykilhugtök
| Hugtak | Merking |
|---|---|
| Gámur (container) | Einangraður, keyrandi pakki af appi og háðum þess. |
| Mynd (image) | Sniðmátið sem gámur er ræstur úr. |
| Grunnmynd (base image) | Upphafspunkturinn í FROM-línu Dockerfile, eins og python:3.12-slim eða node:22. |
| Lag (layer) | Hvert skref í Dockerfile bætir við skyndiminnisgeymdu lagi, sem flýtir endursmíði. |
| Gáttaskipan (port mapping) | Að tengja gátt á hýsilvélinni við gátt inni í gámnum. |
| Rúmmál (volume) | Geymsla sem lifir af þegar gámur er skipt út. Gámar sjálfir eru einnota. |
| Docker Compose | Skrá sem lýsir nokkrum gámum sem keyra saman, eins og API ásamt gagnagrunni. |
| Kubernetes | Kerfi til að keyra marga gáma á mörgum þjónum. Flest lítil öpp þurfa það ekki. |
Algengar misskilningar
- „Docker er sýndarvél.“ Hann er léttari: gámar deila kjarna hýsilsins.
- „Gögn sem eru vistuð inni í gámi eru örugg.“ Gámar eiga að vera hent og skipt út. Allt sem þarf að endast, gögn notenda, innsendar skrár, á heima í gagnagrunni, skráageymslu eða rúmmáli.
- „Það er í lagi að hafa leyndarmál í Dockerfile því það er einkamál.“ Myndir eru deilt og ýtt í geymslur. Sendu leyndarmál við keyrslu í staðinn.
- „Docker gerir app öruggt.“ Einangrun hjálpar, en gámur sem keyrir úrelt hugbúnað með veikum stillingum er samt berskjaldaður.
- „Sérhvert app þarf Docker.“ Kyrr síða eða einfaldur framendi er yfirleitt hýst sem venjulegar skrár, án nokkurs gáms.
- „Docker Desktop er ókeypis fyrir alla.“ Vélin er ókeypis; Docker Desktop krefst greiddrar áskriftar fyrir stærri fyrirtæki, samkvæmt skilmálum Docker.
Hvað á að biðja gervigreindarsmiðinn þinn um
- „Þarf þetta app Dockerfile? Ef svo er, útskýrðu hverja línu á einföldu máli.“
- „Notaðu litla, opinbera grunnmynd og festu útgáfu keyrsluumhverfisins.“
- „Haltu leyndarmálum út úr myndinni. Lestu þau úr umhverfisbreytum við keyrslu.“
- „Gakktu úr skugga um að innsendar skrár og gögn séu geymd í gagnagrunninum eða skráageymslunni, ekki inni í gámnum.“
- „Bættu við Docker Compose-skrá svo forritari geti keyrt framendann, API-ið og gagnagrunninn á staðnum með einni skipun.“
- „Bættu við heilsuathugunarenda (health-check) svo hýsingaraðilinn geti séð hvort API-ið sé uppi.“
Docker í Mythex
Þú þarft ekki að setja upp eða keyra Docker til að nota Mythex. Verkefnið þitt keyrir í einkaskýjaumhverfi, og þegar þú biður um bakenda sem þarf gám, til dæmis C#, Java eða sérsniðna Node- eða Python-þjónustu, skrifar Mythex appið ásamt Dockerfile, forskoðar það í umhverfinu og innleiðir það þegar þú birtir, án þess að þú setjir upp neina hýsingu (hvernig tæknin er valin). Á Pro geturðu flutt verkefnið út eða samstillt það við GitHub og tekið Dockerfile með þér. Um hvernig bakendar og framendar passa saman, sjá framendi vs bakendi.
Spurningar
Hvað er Docker í einföldu máli?
Docker er verkfæri sem pakkar appi ásamt öllu sem það þarf til að keyra, svo sem keyrsluumhverfi forritunarmálsins, forritasöfn og stillingar, í staðlaða einingu sem kallast gámur. Gámurinn keyrir eins á fartölvu, prófunarþjóni eða skýjahýsingu.
Hver er munurinn á Docker-mynd og gámi?
Mynd er pakkaða, lesanlega sniðmátið: appið og háðir þess, byggðir úr Dockerfile. Gámur er keyrandi eintak af þeirri mynd. Þú getur ræst marga gáma úr einni mynd.
Er Docker sýndarvél?
Nei. Sýndarvél líkir eftir heilli tölvu með eigið stýrikerfi. Gámar deila stýrikerfiskjarna hýsilvélarinnar og einangra aðeins appið, svo þeir ræsast hraðar og nota minna minni.
Er Docker ókeypis?
Docker Engine, kjarninn sem keyrir gáma, er ókeypis og opinn. Frá september 2026 segja skilmálar Docker að Docker Desktop sé ókeypis fyrir óviðskiptaleg opin verkefni og fyrir fyrirtæki með færri en 250 starfsmenn og minna en 10 milljónir dala í árstekjur; stærri fyrirtæki þurfa greidda áskrift.
Þarf ég að læra Docker til að byggja app með gervigreind?
Yfirleitt ekki. Margir gervigreindarsmiðir sjá um gáma fyrir þig. Gott er þó að vita hvað Dockerfile er, svo þú skiljir hvernig bakendinn er pakkaður og getir keyrt eða hýst appið annars staðar ef þú flytur það út.