Skip to main content

    שרת VPS ל-Docker על KVM עם NVMe

    שרת ה-VPS של Devoster ל-Docker הוא שרת וירטואלי KVM לא מנוהל עם קרנל לינוקס משלו, דיסק NVMe וגישת root מלאה ביוטה, ארה״ב, כך ש-Docker Engine ו-Compose מותקנים ורצים בדיוק כמו על שרת פיזי. החבילות מתחילות ב-$3.49 לחודש; רוב ה-stacks של Compose מתאימים ל-Starter (‏2 vCPU, ‏4GB, ‏$7.99 לחודש). בנוי למפתחים ולמי שמארח לעצמו.

    • KVM: קרנל משלכם, Docker רץ טבעי
    • אחסון NVMe עם overlay2
    • מ-$3.49 לחודש, Starter ב-$7.99
    • גיבוי ל-3 ימים + Snapshot אחד בחינם
    • יוטה, ארה״ב · ‏1Gbps · תעבורה ללא הגבלה

    המחירים אומתו

    החבילות המומלצות

    • מומלץ

      Starter

      $7.99/לחודש
      • 2 vCPU
      • 4 GB זיכרון
      • 75 GB NVMe
      • IPv4 אחד
    • Nano

      $3.49/לחודש
      • 1 vCPU
      • 1 GB זיכרון
      • 25 GB NVMe
      • IPv4 אחד
    • Micro

      $4.49/לחודש
      • 1 vCPU
      • 2 GB זיכרון
      • 50 GB NVMe
      • IPv4 אחד
    • Basic

      $10.99/לחודש
      • 3 vCPU
      • 6 GB זיכרון
      • 100 GB NVMe
      • IPv4 אחד
    • Advanced

      $13.99/לחודש
      • 4 vCPU
      • 8 GB זיכרון
      • 125 GB NVMe
      • IPv4 אחד

    להשוואת כל 8 חבילות ה‑VPS

    למה Docker צריך VPS מבוסס KVM ולא OpenVZ או LXC

    קונטיינרים של Docker חולקים את הקרנל של המכונה שעליה הם רצים. בגלל זה טכנולוגיית הווירטואליזציה שמתחת ל-VPS חשובה ל-Docker יותר כמעט מלכל דבר אחר.

    ב-VPS מבוסס קונטיינרים (OpenVZ או LXC), ה"שרת" שלכם הוא בעצמו קונטיינר על הקרנל של הספק. להריץ בתוכו Docker זה קונטיינר בתוך קונטיינר, ואם זה עובד תלוי בדברים שהספק שולט בהם: גרסת הקרנל של השרת המארח, אילו מודולים טעונים, איך מואצלים ה-cgroups, האם nesting מופעל בכלל, והאם מותר להשתמש במערכות קבצים overlay ובחוקי iptables. יש ספקים שחוסמים Docker בחבילות כאלה לגמרי, ואחרים מאפשרים אותו עם מעקפים שנשברים בעדכון הבא של השרת המארח.

    חבילות ה-VPS של Devoster הן מכונות וירטואליות KVM. אתם מעלים קרנל לינוקס משלכם, כך ש-Docker Engine מותקן מהמאגר הרשמי של Docker בדיוק כמו על שרת פיזי: cgroups, ‏namespaces, דרייבר האחסון overlay2 וחוקי ה-iptables של Docker עובדים בלי לבקש מאף אחד. ‏Ubuntu 24.04 ו-Debian 12 זמינים כאימג'ים ושניהם נתמכים רשמית על ידי Docker Engine.

    NVMe, ‏overlay2 ולאן הולך הדיסק של Docker

    דרייבר האחסון ברירת המחדל של Docker בלינוקס עדכני הוא overlay2. הוא מערים שכבות אימג' לקריאה בלבד מתחת לשכבה דקה וניתנת לכתיבה לכל קונטיינר, והוא דורש שמערכת הקבצים תחת /var/lib/docker תהיה ext4, או xfs שפורמט עם ftype=1. אחרי ההתקנה הריצו docker info וודאו ששורת ה-Storage Driver מציגה overlay2.

    NVMe עוזר ל-Docker בדיוק איפה שכואב: פריסת שכבות אימג' ב-docker pull, קריאות וכתיבות קטנות ואקראיות של מסדי נתונים ב-volumes, ו-builds שנוגעים באלפי קבצים קטנים. נפח הדיסק הוא שאלה נפרדת, והוא מתמלא ממקומות שאנשים לא מסתכלים עליהם:

    • אימג'ים ישנים ו-build cache. כל pull של תג חדש משאיר את הישן עד שמנקים. docker system df מראה את החלוקה; docker image prune ו-docker builder prune מפנים מקום.
    • לוגים של קונטיינרים. דרייבר הלוגים json-file שבברירת מחדל לא עושה רוטציה. קונטיינר פטפטן יכול למלא דיסק לבד.
    • Volumes של מסדי נתונים. זה המידע שבאמת חשוב לכם, והוא גדל בהתמדה.

    הגדירו רוטציית לוגים פעם אחת, ב-/etc/docker/daemon.json, ואז הפעילו מחדש את Docker:

    {
      "log-driver": "json-file",
      "log-opts": { "max-size": "10m", "max-file": "3" }
    }

    Stack מינימלי של Docker Compose ל-VPS

    התבנית שמחזיקה מעמד על שרת ציבורי: reverse proxy אחד חושף את פורטים 80 ו-443 ומטפל ב-TLS, כל השאר נשאר ברשת הפנימית של Compose, המידע יושב ב-named volumes, ותגי האימג'ים נעולים על גרסה. כך זה נראה עם Caddy, אפליקציה ו-Postgres:

    name: myapp
    services:
      caddy:
        image: caddy:2
        restart: unless-stopped
        ports: ["80:80", "443:443"]
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile:ro
          - caddy_data:/data
      app:
        image: ghcr.io/you/myapp:1.4.2
        restart: unless-stopped
        env_file: .env
        expose: ["3000"]
        depends_on:
          db:
            condition: service_healthy
      db:
        image: postgres:17
        restart: unless-stopped
        env_file: .env
        volumes:
          - db_data:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U app"]
          interval: 5s
          retries: 10
    volumes:
      caddy_data:
      db_data:

    ה-Caddyfile הוא שתי שורות (app.example.com ו-reverse_proxy app:3000), ו-Caddy מנפיק ומחדש את התעודה לבד. שימו לב שהאפליקציה ומסד הנתונים משתמשים ב-expose ולא ב-ports: חוץ מה-proxy, שום דבר לא נגיש מבחוץ. לגרסה מלאה ואמיתית של התבנית הזו, ראו איך אנחנו מריצים n8n עם Postgres ו-Caddy במדריך להתקנת n8n על VPS.

    איזו חבילת VPS לאיזה stack של Docker?

    הדמון של Docker עצמו קל; מה שקובע את הגודל הוא סכום הקונטיינרים ברגע העמוס ביותר שלהם, ועוד ה-page cache שמסדי הנתונים נשענים עליו. מסדי נתונים ושירותי JVM או Node.js קובעים את הרצפה הרבה יותר ממספר הקונטיינרים.

    ה-stack שלכםחבילה
    קונטיינר או שניים קטנים: אתר סטטי, VPN, מוניטור זמינותNano (‏1 vCPU / ‏1GB / ‏25GB)
    Proxy, אפליקציה אחת ומסד נתונים קטן, תנועה נמוכהMicro (‏1 vCPU / ‏2GB / ‏50GB)
    Stack פרודקשן טיפוסי ב-Compose: proxy, אפליקציה, Postgres או MySQL, ‏Redis, ‏workerStarter (‏2 vCPU / ‏4GB / ‏75GB)
    שניים או שלושה stacks זה לצד זה, או בניית אימג'ים על השרתBasic (‏3 vCPU / ‏6GB / ‏100GB)
    הרבה stacks או פרויקטים של לקוחות על שרת אחד, Git עצמאי עם CI runners, מנוע חיפושAdvanced (‏4 vCPU / ‏8GB / ‏125GB)
    כמה שירותי JVM, הרבה workers של תורים או דפדפנים headlessPro (‏6 vCPU / ‏12GB) ומעלה

    הרגל אחד שחוסך מדרגת חבילה: לבנות אימג'ים ב-CI ולמשוך אותם לשרת. קומפילציה של פרונטאנד או התקנת תלויות בתוך docker build על VPS קטן היא לרוב הקפיצה הגדולה ביותר בזיכרון וב-CPU שהשרת יראה אי פעם. להרצת כמה אתרים נפרדים על שרת Docker אחד, המדריך שלנו לאירוח כמה אתרים על VPS אחד מכסה בידוד וניתוב.

    יסודות אבטחה ל-Docker על VPS ציבורי

    קודם עושים את ההקשחה הכללית, כמו בצ'קליסט ההקשחה שלנו ל-VPS: רק מפתחות SSH, חומת אש שחוסמת כברירת מחדל, ועדכוני אבטחה אוטומטיים. אחר כך הנקודות שייחודיות ל-Docker, שתופסות גם אנשים שעשו את כל השאר נכון:

    • פורטים שחושפים עוקפים את UFW. ‏Docker כותב חוקי iptables משלו עבור ports:, כך שפורט שחשפתם נגיש מהאינטרנט גם אם UFW אומר deny. חשפו רק את ה-proxy; לכל השאר השתמשו ב-expose, או קשרו ל-127.0.0.1:port כשאתם צריכים גישה מהשרת עצמו.
    • קבוצת docker שווה root. כל מי שיכול לדבר עם ה-socket של Docker יכול למפות את מערכת הקבצים של השרת. הוסיפו רק משתמשים שאתם סומכים עליהם, ואל תמפו את /var/run/docker.sock לקונטיינר שפתוח לאינטרנט אלא אם אתם מבינים בדיוק מה הקונטיינר הזה יכול לעשות אחר כך.
    • נעלו תגי אימג'ים ועדכנו בכוונה. ‏latest יחד עם pull אוטומטי זה בדיוק איך שינוי שובר מגיע בשלוש בלילה. קוראים release notes, ואז מעלים את התג.
    • סודות לא נכנסים לאימג'ים. מעבירים אותם בקובץ .env עם chmod 600 או ב-Docker secrets, לא צרובים ב-Dockerfile.

    גיבוי volumes של Docker על VPS

    כל VPS ב-Devoster כולל גיבוי לילי של כל השרת, כש-3 הימים האחרונים נשמרים, ועוד Snapshot אחד שאתם יכולים לצלם בעצמכם מהפאנל (‏Snapshots מהפאנל פגים אחרי 7 ימים). הם מכסים את המקרה של "להחזיר את כל המכונה אחורה": שדרוג שהשתבש, volume שנמחק, עדכון מערכת שבור. צלמו Snapshot רגע לפני docker compose pull על כל דבר חשוב.

    הם לא מחליפים גיבוי ברמת האפליקציה. גיבוי של שרת שלם שנלקח בזמן שמסד נתונים כותב הוא לא אותו דבר כמו dump נקי, ו-3 ימי היסטוריה לא יעזרו אם תגלו בעיה בשבוע השני. תעשו dump למסדי הנתונים לפי לוח זמנים (‏pg_dump, ‏mysqldump), תארזו volumes שמחזיקים קבצים, ותעתיקו את שניהם מחוץ לשרת.

    מתי VPS ל-Docker הוא לא הבחירה הנכונה

    • אתם צריכים autoscaling או זמינות גבוהה על כמה מכונות. ‏VPS יחיד הוא נקודת כשל יחידה. אם נפילה של שרת אחד לא מקובלת עליכם, אתם צריכים כמה שרתים ו-orchestrator, או פלטפורמת קונטיינרים מנוהלת.
    • אתם לא רוצים לתחזק שרת. חבילות ה-VPS של Devoster לא מנוהלות. שדרוגי Docker, עדכוני מערכת, ‏TLS וגיבויים עליכם. אם אתם רק רוצים לדחוף קוד ושירוץ, PaaS יתאים יותר.
    • אתם צריכים GPU. החבילות האלה הן CPU בלבד.
    • המידע שלכם חייב להישאר באירופה או בישראל. שרתי ה-VPS של Devoster נמצאים ביוטה, ארה״ב.
    • מדובר באתר וורדפרס אחד. להכניס התקנת וורדפרס יחידה לקונטיינרים מוסיף עבודה בלי הרבה תועלת; אחסון האתרים של Devoster פשוט יותר לזה.

    אחרת, השוו את כל שמונה חבילות ה-VPS של Devoster; ‏Starter הוא המקום שבו נוחתים רוב ה-stacks של Compose.

    שאלות ותשובות

    כן. כל חבילה היא מכונה וירטואלית KVM עם קרנל משלה וגישת root מלאה, כך ש-Docker Engine ותוסף Compose מותקנים מהמאגר הרשמי של Docker ורצים באופן טבעי, עם דרייבר האחסון overlay2 ובלי הגדרות nesting אצל הספק שצריך לדאוג להן.

    לא. בוחרים אימג' לינוקס (‏Ubuntu 24.04, ‏22.04 או 20.04, ‏Debian 12 או AlmaLinux 10) ומתקינים Docker בעצמכם. השתמשו במאגר הרשמי של Docker ולא בחבילה של ההפצה, ואז ודאו עם docker compose version.

    הרבה חבילות זולות הן קונטיינרים של OpenVZ או LXC ולא מכונות וירטואליות. ‏Docker בתוכן תלוי בקרנל, במודולים ובהגדרות ה-nesting של השרת המארח, שהספק שולט בהם. ב-KVM אתם מריצים קרנל משלכם, אז המגבלות האלה לא חלות.

    סוכמים כמה הקונטיינרים צורכים בשיא ומשאירים מקום ל-page cache. ‏Proxy עם אפליקציה אחת ומסד נתונים קטן נכנסים ב-2GB; stack פרודקשן טיפוסי עם Postgres או MySQL, ‏Redis ו-worker מרגיש בנוח ב-4GB; כמה stacks או בניית אימג'ים על השרת דורשים 6 עד 8GB.

    Docker מוסיף חוקי iptables משלו לפורטים שחושפים, והם נבדקים לפני החוקים של UFW. אל תחשפו פורטים של שירותים פנימיים; השתמשו ב-expose ברשת של Compose, או קשרו ל-127.0.0.1 אם רק השרת עצמו צריך גישה.

    אפשר להתקין הפצה קלה כמו k3s על VPS מבוסס KVM, כי הקרנל בשליטתכם. על שרת יחיד זה בעיקר מוסיף תקורה לעומת Compose; זה מתחיל להשתלם כשמריצים כמה שרתים. לקלאסטר של שרת אחד עם עומסים אמיתיים תתכננו לפחות את חבילת Starter.

    הגיבויים הליליים מכסים את כל ה-VPS, כולל volumes, ו-3 הימים האחרונים נשמרים. למסדי נתונים תעשו גם dump משלכם: גיבוי של מסד נתונים שרץ הוא לא כמו dump עקבי, ו-3 ימי היסטוריה זה קצר.

    Ubuntu 24.04 או Debian 12. שתיהן זמינות כאימג'ים ב-Devoster, שתיהן נתמכות על ידי Docker Engine, וכמעט כל מדריך Docker כתוב עבור אחת מהן. לשרתים חדשים עדיף לוותר על Ubuntu 20.04; התמיכה הרגילה בה הסתיימה.
    VPS ל-Docker

    התחילו עם Starter ב‑$7.99 לחודש

    אנחנו מעריכים את הפרטיות שלכם

    אנו משתמשים בקובצי Cookie חיוניים לתפעול האתר, ובקובצי Cookie אופציונליים לניתוח נתונים כדי להבין איך אתם משתמשים ב-Devoster ולשפר את השירותים שלנו. באפשרותכם לקבל את כל הקבצים או להתאים את ההעדפות.

    קראו עוד ב מדיניות העוגיות ו מדיניות הפרטיות. תוכלו לשנות את בחירתכם בכל עת.