מה שאתה צריך לדעת על Docker ב- Windows

את סוף השבוע שעבר ביליתי ב- Monki Gras, כנס מפתחים בלונדון שהתמקד במלאכת פיתוח תוכנה. זה אירוע מרתק, והשנה התמקד כיצד לארוז תוכנה.

לא מפתיע, רבים מהדוברים שוחחו על תפקידם של מכולות בדואפים ומסירה רציפה. אך הייתה תפיסה מוטעית כללית של תמיכת Windows בקונטיינרים, שבדרך כלל מאופיינת כתמיכה ב- Docker הפועל במחשבי VM של לינוקס.

זה לא נכון: ל- Windows יש טכנולוגיות מיכל משלה, הבניין על Docker אך נותן לו ספין ייחודי של מיקרוסופט. זה כנראה מקור הבלבול, כאשר חלונות 10 מוסיפים תמיכה במערכת משנה לינוקס ומיקרוסופט מוסיפה כלי Docker ל- Windows Server 2016 בערך באותו זמן. שניהם הם חלק מהגישה של מיקרוסופט לפיתוח יישומים מקוריים בענן, המהווה מרכיב מרכזי בפלטפורמת התכלת שלה בהמשך.

המחויבות של מיקרוסופט למכולות, אחת ההתפתחויות החשובות בין-תעשייתיות בשנים האחרונות, לא צריכה להיות מפתיעה. אולי המחשבה הטובה ביותר היא דרך להכיל ארץ משתמש שלמה של תהליכים ומרחבי שמות כדי לבודד אותה ממקרים אחרים הפועלים על אותו שרת, מכולות הפכו במהירות למרכיב מרכזי של devops ויישומי אינטגרציה רציפה. מיקרוסופט הייתה מאמצת מהירה של גישות אלה באופן פנימי, וכמו תמיד, הכלים שלה משקפים את האופן שבו רדמונד משתמשת בתוכנה וכיצד היא בונה יישומים.

הבנת מכולות

על ידי הפרדת השירותים שאפליקציה משתמשת בהם מהשירותים להם מערכת הפעלה זקוקה, מכולות מודרניות הפכו לכלי רב עוצמה לאריזה ולפריסת יישומים בשרתים. מכולות מציעות ניידות בין פיתוח, מרכזי נתונים מקומיים ועננים פרטיים, היברידיים וציבוריים. יישומים העטופים במיכל אינם תלויים במערכת ההפעלה המארחת, והם יכולים לפעול על כל מארח מכולות דומה ללא שינויים.

עטיפת יישום במכולה פירושה שהיישום קל לפרוס לצד כל קבצי התצורה והתלות המתאימים: אם מיכל פועל על מכונת פיתוח או עובר את כל מבחני האינטגרציה שלך, הוא יפעל בשרת ללא כל שינוי. אתה יכול לשנות מכולה עבור גרסה חדשה מבלי להשפיע על מערכת ההפעלה הבסיסית, ואתה יכול להעביר מכולה משרת לשרת מבלי להשפיע על הקוד שלך. זו נקודת הקצה ההגיונית של מודל devops, המאפשרת לך לפרוס תשתית ויישומים בנפרד - ולנהל אותם בנפרד.

במקור, ניתן למצוא טכנולוגיית מיינפריים, מכולות (או לפחות צורות דומות של מרחב שמות ובידוד תהליכים) בהרבה מערכות הפעלה של יוניקס, כולל לינוקס וסולאריס.

בתוך מכולות חלונות

כעת, עם שחרורו של Windows Server 2016, ל- Windows יש טכנולוגיית מיכל משלה. זה מבוסס סביב שירות המיכל הפתוח הפופולרי של Docker, אך הוא מוסיף תמיכה לשימוש בשורת הפקודה PowerShell ולבידוד נוסף עם השילוב של Nano Server הממוקד במיכל ומכולות Hyper-V.

דוקר נשאר בלב אסטרטגיית הקונטיינר של מיקרוסופט. הכלים שלה, כמו Swarm and Machine, נמצאים בשימוש נרחב, ומוצר Data Center שלה יכול לנהל גם מכולות Windows וגם Linux. אתה יכול אפילו להשתמש בלקוח של דוקר ממעטפת ה- Bash שהיא חלק מ- Windows 10, להתקין אותו במערכת המשנה של Windows עבור Linux. גישה זו אכן מצריכה ממך להטט אישורים, לכן ייתכן שתעדיף להשתמש באפליקציית Windows של דוקר ככלי פיתוח וניהול בסיסי עבור מכלי Windows ו- Linux שלך.

מכולות Windows הן, כמו תכונות רבות של Windows Server, תפקיד שניתן להתקין באמצעות תיבת הדו-שיח המוכרת של Windows או באמצעות PowerShell. לקחת את המסלול של PowerShell הגיוני ביותר מכיוון שיש מודול PowerShell של OneGet שמתקין הן את תכונת מכולות Windows והן את Docker, עם צורך בהפעלה מחדש בלבד. (יהיה עליך להפעיל גם וירטואליזציה של Hyper-V אם ברצונך להשתמש במכולות Hyper-V.)

ישנה כמות מפתיעה של התלהבות ממכולות Windows מצד מפתחים וצוותי אופ; מיקרוסופט דיווחה על יותר ממיליון הורדות של תמונות Windows בסיסיות מספריית המיכלים של Docker מאז ש- Windows Server 2016 נכנס לזמינות כללית.

בנייה ופריסה של מכולות ב- Windows

מכולות אינן רק כלי שרת; הגרסאות המקצועיות והארגוניות של מהדורת יום השנה של Windows 10 תומכות גם במכולות. יהיה עליך להפעיל אותם מתיבת הדו-שיח של Windows, אך לאחר הפעלתם תוכל להתקין ולנהל מכולות Windows במחשב פיתוח באמצעות PowerShell. מכיוון ש- Windows 10 תומך רק במכולות Hyper-V, יהיה עליך להתקין גם את Hyper-V.

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

תמונת הבסיס המוצעת של מיקרוסופט עבור מכולות Windows מהבנייה החדשה היא Nano Server, יישום השרת שלה הממוקד בענן עם טביעת רגל נמוכה. Nano Server הגיוני מאוד כבסיס מכולות: הוא קטן ומהיר, ללא ממשק משתמש, כך שהוא מהיר לפריסה ומאובטח יחסית.

הערה חשובה אחת: למרות שאפשר להשתמש בה לאירוח זמן ריצה כמו Node.js, Nano Server מיועד לארח יישומי .Net Core, כולל ASP.Net Core, כך שלא תקבלו את כל תכונות ה- NET שהתרגלתם אליהן. . יש מספיק הבדל מ- Windows Server המוכר שאולי עדיף לחשוב על מכולות Windows המתארחות ב- Nano Server ככלי ליישומים חדשים ולא כמארח לקוד קיים.

ההבדלים הללו מסבירים מדוע עסקים רבים משתמשים ב- Windows Server Core כתמונת בסיס. למרות שהוא גדול יותר ולוקח יותר זמן לפריסה מאשר Nano Server, Windows Server Core מציע תמיכה ב- Windows SDK הנוכחי ויישום מלא של .Net. הרבה יותר קל להעביר במהירות קוד קיים לשרת הליבה, מה שמאפשר לך, כפי שמכנה זאת מנהל התוכניות המובילות עבור Windows Server ו- Containers Hyper-V, טיילור בראון, "להרים ולהעביר" משרתים קיימים למכולות, כך שהם ' ניתן לפרוס מחדש בכל מקום שתרצה. לאחר שהיישום נמצא במכולה, מפתחים יכולים לפרק אותו עוד יותר; למשל, העברת מחברי API למיכלים מבוססי Nano Server משלהם כדי לפשט את תחזוקת היישומים.

תמיכה במכולות מובנית בכלי Windows ברמה הנמוכה ביותר, כאשר מכולות Windows מהוות כעת יעד פריסה עבור Visual Studio 2017. אתה יכול לבנות ולהעביר יישומים כמכולה, מוכנים לבדיקה. הפיכת מכולות לחיצת עכבר לפשוטה היא צעד חשוב.

עם Windows Azure בקרוב לתמיכה בווירטואליזציה מקוננת, היכולת להוסיף בידוד נוסף בענן הציבורי תעזור לתעשיות מוסדרות להצדיק מעבר לשני המכולות וגם לענן.