מה דוקר יכול לעשות בשבילכם?

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

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

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

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

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

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

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

בהנחה שיש לכם דוקר מותקן הפקודה הבאה לדוגמא תכניס אתכם ל Interactive Shell של Node.JS גירסא 10 גם אם אין לכם נוד על המחשב או שיש לכם נוד בגירסא ישנה יותר:

$ docker run -it --rm node:10 node

2. דוקר יעזור לכם לנהל Deployment מורכב בדגש על Micro Services

ברגע שאפשר לשים את התוכניות שלנו בתוך מיכלים אנחנו יכולים לנתק את הקשר בין המיכלים לבין המכונות עליהן המיכלים האלה רצים. במילים אחרות אם אני יוצר מיכל של בסיס נתונים שיש בו את Postgresql אני יכול לשים את המיכל הזה על כל מכונה, או להעביר אותו בין מכונות. אם יש לי Micro Service שכתוב ב Node.JS שעושה פעולה מסוימת אני יכול לשים את המיכל הזה על מכונה או על שלוש מכונות ממש בקלות.

עכשיו בואו נניח שהמערכת שלכם מורכבת מ 10 תתי מערכות שונות, חלקן Micro Services, חלקן אפליקציות גדולות יותר וחלקן זה מערכות לניהול מידע כמו בסיסי נתונים - בעזרת דוקר תוכלו להפריד את המערכות שלכם לעשרה מיכלים ולחלק אותם בין שרתים שונים. אחת המערכות בעומס? אין בעיה מעבירים אותה לשרת משלה או מעלים עותק נוסף שלה (או 5) על שרת חדש.

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

3. דוקר יעזור לכם להעביר מוצר בין מפתחים ומהמפתחים לבודקים

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

עם דוקר זה ממש לא בעיה.

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

עכשיו שהבנתם מה דוקר יכול לעשות בשבילכם, אני מקווה שגם יעניין אתכם לשמוע את ה-איך. בדיוק בשביל זה ביום חמישי הקרוב (כן עוד יומיים) אני מתכנן להעביר וובינר של שעה במתכונת Hands On על דוקר. אם יש לכם שעה פנויה מוזמנים להירשם ולהצטרף בקישור:

https://www.tocode.co.il/workshops/67