Docker אחד הנושאים המשפיעים והחמים בפיתוח פרויקטי תכנה בשנים האחרונות ובפרט עבור ה- Cloud Computing. הלוויתן הגדול הנושא על גבו מכולות ממחיש את הרעיון. Docker מאפשר באופן פשוט וקל בעזרת ה- Containers לארוז, לנייד, להתקין ולהריץ יישומים על כל מחשב באופן מהיר, מאובטח ויעיל, לא רק על ה- laptop האישי, המחשב הנייח בבית או במקום העבודה אלא גם בכל פלטפורמה של Cloud Computing.

השימוש ב- Containers ש- Docker הציג, שינה את אופן פיתוח פרויקטי התכנה מהמתקדמים בעולם והדרך בה מבצעים עבורם Deployment, ניהול ועדכון, עם דגש על פיתוח מהיר ואיכותי, כשהן נארזות באופן יעיל, קומפקטי ומאובטח יחד עם כל ה- Dependencies הנחוצים.
תכונת הניוד של ה- Container מאפשרת ליישום להתנייד ולרוץ בקלות בכל מקום ובכל סביבה התומכת בשרותיו של Docker, בין עם על המחשב המקומי או על כל Operation System, בפרט ביחידת המחשוב המרוחק ב- Cloud.
כל Container אורז בתוכו את היישום, את כל ה- Dependencies וה- Configuration הנחוצים לצורך הרצתו התקינה. היישום שרץ בתוך ה- Container מבודד משאר היישומים הרצים ב- Containers הסמוכים. מבחינת היישום הוא רואה עצמו כאילו הוא היחיד שרץ על גבי ה- Operation System.
סיטואציה שכל מפתח מכיר וחווה ללא שימוש ב- Docker, תהליך התקנת תכנה ספציפית על גבי ה- Laptop האישי או ה- Server המרוחק:
- הורדה והרצת ה- Installer.
- בשלב מסויים קופצת לה לפתע הודעת שגיאה.
- חיפוש בעזרת google ומציאת פתרון לשגיאה.
- הרצה חוזרת של ה- Installer.
- בשלב מסויים קופצת לה הודעת שגיאה נוספת.
- חיפוש בעזרת google ומציאת פתרון לשגיאה זו.
- וכך הלאה עד שההתקנה מסתיימת בהצלחה.
את התהליך המתואר Docker למעשה פותר, ע"י כך שהוא מאפשר באופן פשוט וקל לארוז, להתקין ולהריץ את היישום עם כל ה- Dependencies הדרושים על כל יחידת מחשוב.
לשם ההמחשה אם נרצה להתקין את Redis ונפעל בהתאם להוראות ההתקנה באתר נראה שיש צורך בכ-4 שורות פקודה, כשהראשונה היא פקודת wget. אך במידה ו- wget אינה מותקנת על המחשב נקבל הודעת שגיאה הדומה ל- command not found: wget. אנו כמובן נוכל להתקין את wget ולהמשיך הלאה, אך ייתכן ששוב ניתקל בעוד הודעת שגיאה בהמשך וכך הלאה.
עם Docker תהליך ההתקנה פשוט יותר ומתבצע ע"י הורדת ה- Official Image של Redis מהמאגר ב- docker-hub והרצת הפקודה הבאה:
docker run -it redis
בתוך מס' שניות Redis מותקן ורץ על המחשב. זה הכל.
סיטואציה נוספת שמפתחים נתקלים בה היא פיתוח פרויקט בסביבה מסוימת ובשלב מסוים הם נדרשים להעביר את היישום לסביבה אחרת ולרוץ באופן תקין. כל מי שחווה את הסיטואציה הזו מכיר את אריכות הזמן ומורכבות התהליך, הבדלי הסביבה, גרסאות שונות, מערכות ההפעלה, משתני הסביבה, Configuration ועוד, עד שבסופו של דבר היישום ירוץ בדיוק באותו האופן שרץ בסביבת הפיתוח.
היכולת של Docker עם התכונות של ה- Containers מאפשרות תמיכה בארכיטקטורת ה- Microservices היות וכל Microservice יכול להיות ארוז בתוך Container באופן מבודד יחד עם כל ה- Dependencies הנחוצים לו ובאותה הקלות לבצע עבורו Deployment.
לסיכום
Docker מפשט את תהליך ההתקנה וההרצה, Docker בעזרת ה- Containers דואג לכל נושא ה- dependencies וה- setup ובכך מסיר מאיתנו את האחריות כלפיהם. כל יישום רץ בתוך Container והוא מבודד משאר היישומים הרצים ב- Containers לצידו. Docker למעשה מהווה פלטפורמה לכל יישום בכל סביבה.
קישורים
- Docker
- Docker Hub
- Docker Docs
- Docker Reference Documentation
CLIs, APIs, Docker File, Compose File, Drivers and Specifications - Docker Cheat Sheet