8.8 קונטיינרים הרצאה 1
קונטיינר¶
- כאשר אנחנו מפתחים תוכנה עם המון רכיבים, כמו כמה תוכנות פייתון, DB, שרת קבצים. להרים את כל החלקים מחדש של התוכנה בכל פעם מחדש יכול לקחת קצת זמן.
- ומה אם נרצה להתקין את התוכנה שלנו בעוד מחשבים? זה גם יכול לקחת קצת זמן להתקין את כל הרכיבים.
- בדיוק בשביל לפתור את הבעיה הזו יש לנו קונטיינרים, קונטיינר הוא חבילה שאנחנו יכולים לבנות שמכילה את כל החלקים של התוכנה שלנו ביחד.
- אנחנו יכולים לבנות קונטיינר שמתקין את התוכנה שלנו ואז להריץ אותו בכל מחשב שנרצה, בפעולה אחת פשוטה.
- אפשר להריץ מספר קונטיינרים במקביל באותו מחשב, והם לא יכולים להפריע אחד לשני, למעשה קונטיינר רץ במערכת נפרדת לחלוטין משאר המחשב, ובצורה נפרדת לקונטיינרים אחרים - זה מוודא שהקונטיינר יפעל בצורה מיטבית, ושום דבר לא יפריע לו.
- בעתיד נראה עוד המון יתרונות שיש לקונטיינרים שמאפשרים לנו לכתוב תוכנה יציבה יותר.
דוקר - docker¶
- דוקר הוא כלי מעולה שממש טכנולוגית קונטיינרים, בקורס הזה נלמד איך להשתמש בדוקר כדי להתנהל עם קונטיינרים.
- דוקר הוא המנוע הפפולרי ביותר לקונטיינרים, הוא פשוט, ומאפשר לנו את רוב מה שאנחנו צריכים במנוע קונטיינרים.
קונספטים בדוקר - docker¶
- אז איך אנחנו יכולים ליצור קונטיינרים? כדי ליצור קונטיינר אנחנו צריכים לתת הוראות למחשב כיצד לבנות את הפרויקט שלנו, זה נקרא docker image, דמיינו תמונה שבה מתואר בדיוק כיצד לבנות את הפרויקט, לאחר שיש לנו תמונה כזו - דוקר יודע לקחת אותה ולבנות את הפרויקט בעצמו.
- אבל איך בכלל אפשר ליצור docker image של הפרויקט שלנו? אנחנו יכולים לכתוב אחד באמצעות כתיבת dockerfile, בdockerfile אנחנו כותבים בשפה מיוחדת בדיוק איך דוקר אמור לבנות את הפרויקט, ואז אנחנו מקמפלים את זה לdocker image.
שימוש בסיסי עם דוקר - docker¶
- עקבו אחרי המדריך הזה להתקנת דוקר לווינדוס - https://docs.docker.com/desktop/install/windows-install/
- מעולה, עכשיו נעבור על איך לכתוב dockerfile לפרויקט שלנו עם דוגמה פשוטה:
# Use an official Python runtime as a parent image FROM python:3.9 # Set the working directory in the container WORKDIR /app # Copy the current directory contents into the container at /app COPY . /app # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt - הפקודה הראשונה מאתחלת לנו image עם פייתון 3.9 מותקן
- הפקודה השנייה מגדירה את התקייה (app/) כראשית ובה נתקין את הפרויקט (working directory).
- הפקודה השלישית מעתיקה את כל הפרויקט פייתון שלנו לתוך app/
- הפקודה הרביעית מתקינה את כל הספריות של הפרויקט באמצעות הקובץ requirements מכיל את הרשימה של הספריות שצריכות להיות מותקנות.
-
קיימים עוד המון פקודות, טיפ: תניחו שהכל קיים, אם אתם רוצים להוסיף עוד פקודה שאתם לא מכירים חפשו אותה באינטרנט, יש עוד המון פקודות.
-
קימפול dockerfile לimage:
- הנקודה בסוף זה כדי לסמן את התקייה הנוכחית שאנחנו נמצאים בה, שימו לב שאתם נמצאים באותה תקייה שבה הדוקר נמצא
-
הtag אמור לסמן את הגרסא של הdocker image, התחילו נניח ב1 לדוגמה - לבחירתכם.
-
הרצת docker image
-
אפשר לתת שם לקונטיינר שלכם, אפשר להריץ את אותו image מספר פעמים.
-
עצירת docker image
-
מחיקת קונטיינר
-
שימו לב, אחרי שעצרתם קונטיינר, עם rm אתם יכולים למחוק אותו - זה אומר שאם תעשו לו start מחדש הוא ירוץ מההתחלה, אז זה דרך לעשות לקונטיינר restart.
-
קיימים עוד הרבה פקודות, מוזמנים לבדוק בגוגל - אבל אלו הפקודות הבסיסיות.
דוקר-האב - docker hub¶
- דוקר-האב זה גיטהאב של דוקרים, אתר שמכיל המון דוקרים שאנשים כתבו, מאפשר להעלות דוקרים, ולהוריד.
- ממליץ מאוד לראות את הדוקרים השונים באתר: https://hub.docker.com/, קיימות אפילו פקודות דוקר שמאפשרות לכם למשוך image-ים ישירות מהאתר, ולהעלות.