Ugrás a tartalomra

Megoldások · Konténerek

Mekkora szerver kell a Dockerhez?

A konténerek egy kernelen osztozó folyamatok, nem kis virtuális gépek: a démon körülbelül 100 MB-ot foglal, utána minden más csak az Ön saját folyamata. Így a válasz kisebb, mint amire a kérdés számít: egy proxy, egy alkalmazás, egy adatbázis és egy gyorsítótár együtt nagyjából 515 MB, ami bőven elfér a(z) BD-8 csomagon $12.90 áron.

Mit foglal valójában egy konténer

Tartományok, nem benchmarkok

Az image, a konfiguráció és a forgalom jobban befolyásolja ezeket, mint bármely táblázat. Futtassa a docker stats parancsot a saját stackjén: csak ez a szám érvényes Önre.

Jellemző rezidens memória gyakori konténeres munkaterhelésekhez
KonténerJellemző memóriaElfér ezen: BD-8 (8 GB)
Egy reverse proxynginx, Caddy, Traefik15–60 MB129 a felső határon
Egy kis webalkalmazásNode, Python, Go: egy folyamat60–200 MB38 a felső határon
PostgreSQL vagy MySQLkis adatkészlet, alapértelmezett pool200–500 MB15 a felső határon
Redisgyorsítótárként, maxmemory által korlátozva20–200 MB38 a felső határon
Egy JVM-szolgáltatásJava, Kotlin, Elasticsearch500–2000 MB3 a felső határon

A számítás

Mit bír el az egyes csomagok

A memória, mínusz 300 MB az operációs rendszernek és 100 MB a démonnak, elosztva azzal, amennyit a konténerei foglalnak. A középső oszlop egy teljes stack (proxy, alkalmazás, adatbázis, gyorsítótár), körülbelül 515 MB.

Konténer- és stack-kapacitás csomagonként, lemezzel és aktuális árakkal
CsomagRAMTeljes stackekKis alkalmazásokLemezÁrÜzembe helyezés
VPS-11 GB1325 GB$9.90Üzembe helyezés
BD-88 GB1538100 GB$12.90Üzembe helyezés
BD-1212 GB2359200 GB$17.90Üzembe helyezés
BD-2424 GB46120300 GB$31.90Üzembe helyezés

A lemez a második meglepetés, és ezzel később találkoznak: az image-ek, kötetek és naplók csendben felhalmozódnak. Tegye a(z) docker system prune parancsot egy heti cronba, mielőtt sürgőssé válik, nem utána.

Önmagunk ellen

Mikor ne ezt vásárolja

Egy menedzselt konténerplatform azért drágább, mert ő végzi az üzemeltetést. Ez valódi, megvásárolható szolgáltatás.

Egy VPS root hozzáférést ad, és Önre bízza a frissítéseket, az újraindításokat, a tanúsítványokat és az éjszakai riasztásokat. Ez drámaian olcsóbb, és valóban több munka. Ha ezt a munkát nem szeretné, egy menedzselt platform az őszinte válasz, és inkább azt ajánljuk, mint hogy eladjunk egy gépet, amely végül elhagyatva, frissítetlen, az internetre kitett démonnal marad. Ugyanennek a tanácsnak két kisebb része: állítson be memóriakorlátot minden konténerre, hogy a rosszul viselkedő álljon le, ne az adatbázisa, és egyetlen gépen ne nyúljon a Kuberneteshez: egy ütemezendő feladat nélküli orchestrator csak bonyodalom.

Kérdések

Amit vásárlás előtt kérdezni szoktak.

Mennyi RAM-ot használ maga a Docker?
Nagyon kevés, és ez az, ami meglepi az embereket. A Docker-démon nagyjából 100 MB-ot foglal, utána minden konténer csak egy folyamat: nincs második operációs rendszer, nincs második kernel, nincs konténerenkénti fix költség, mint egy virtuális gépnél. A számítás tehát egyszerű: a gép memóriája, mínusz körülbelül 300 MB az operációs rendszernek és 100 MB a démonnak, elosztva a ténylegesen futtatott folyamatok között.
Hány konténert futtathat egy kis VPS?
Többet, mint amit a kérdés sugall, mert „egy konténer” nem méretegység. Tíz reverse proxy és egy Elasticsearch merőben eltérő gépet igényel. A(z) BD-8 csomagon (8 GB $12.90 áron) egy proxy, egy webalkalmazás, egy adatbázis és egy gyorsítótár együtt nagyjából 515 MB, így a gép nagy része szabad marad. A fenti táblázat elvégzi az osztást; futtassa a `docker stats` parancsot a saját stackjén, hogy megkapja az Önre valóban érvényes számot.
Olcsóbb egy VPS, mint egy menedzselt konténerplatform?
Árban szinte mindig, de ez nem a teljes összehasonlítás. Egy platform azért kér többet, mert ő végzi az üzemeltetést: frissítések, újraindítások, tanúsítványok, a hajnali 3-as riasztás. Egy VPS root hozzáférést ad, és mindezt visszaadja Önnek. Ha konténereket szeretne futtatni, és vállalja ezt a munkát, a VPS drámaian olcsóbb. Ha inkább nem, fizessen a platformért: inkább ezt mondjuk ki, mint hogy eladjunk egy gépet, amely végül elhagyatva marad egy frissítetlen démonnal.
Szükségem van Docker Swarmra vagy Kubernetesre?
Egy gépen nem. A Compose elég egy olyan stackhez, amely egyetlen szerveren él, és a saját üzemeltetésű beállítások döntő többségénél ez a helyes válasz: egy orchestrator feladata a gépek közötti ütemezés, egy gépen pedig nincs mit ütemezni. Akkor nyúljon a Kuberneteshez, ha valóban több gépe van és oka a bonyolultságra, előbb ne.
Mi fogy el először: memória, CPU vagy lemez?
Általában a memória, és látványosan: a kernel out-of-memory killere kiválaszt egy folyamatot és leállítja, ami úgy néz ki, mintha egy konténer rejtélyesen újraindulna. Állítson be konténerenkénti memóriakorlátot, hogy a rosszul viselkedő álljon le, ne az adatbázisa. A lemez a második meglepetés: az image-ek, kötetek és naplók csendben felhalmozódnak, ezért a `docker system prune` jóval azelőtt egy heti cronba való, hogy sürgőssé válna.
Milyen OS-képet futtasson a hoszt?
Bármelyik a mieink közül: minden csomag minden OS-képet futtat, és a Docker mindegyiken fut. Ha nincs preferenciája, az Ubuntu LTS a megfontolandó alapértelmezés, egyszerűen azért, mert a legtöbb konténeres dokumentáció ezt feltételezi. A disztribúció sokkal kevésbé számít, mint amennyire tűnik: a konténerek saját userlandet hoznak, így a hoszt alig több egy kernelnél és egy démonnál.