האם אתה חדש בתמונות חלונות של Docker? האם אתה עובד כרגע בחנות של Windows ומתוסכל ללמוד על בניית Docker עבור תמונות מיכלים? באת למקום הנכון. הדרך הטובה ביותר ללמוד על משהו חדש היא על ידי ביצוע פעולות עם הפקודות docker build
ו־docker build "tag"
!
במאמר זה, תלמד כיצד ליצור את התמונה הראשונה שלך של Windows Docker מתוך Dockerfile באמצעות פקודת docker build
.
בואו נתחיל!
הבנת תמונות מיכלי Docker
לשנים רבות, הדרך היחידה לבדוק או לבצע פיתוח במספר מערכות הפעלה (OS) הייתה להחזיק מספר מכונות פיזיות או וירטואליות מוקדשות מודלוות עם הגרסה של המערכת הפעלה שבחרת. המתודולוגיה הזו דרשה יותר חומרה והוצאות למעבר להקצאה של מכונות חדשות עבור כל תוכנה ורקע מערכת הפעלה.
אך בימינו, שימוש בתמונות מיכלי Docker גדל, למעשה חלקית בגלל הפופולריות של ארכיטקטורת השירות המיקרוסרו. בתגובה לעלייה בפופולריות של Docker, מיקרוסופט החלה לתמוך בצורה פומבית בתמונות Docker למספר מוצרים נוצרים שלה על הדף שלה ב־Docker Hub. הם אף הוסיפו תמיכה נייטיבית בתמונות עבור Windows כחלק מתכונת המוצר ב־Windows 10 ו־Windows Server 2016!
A Docker image is run on a container by using the Docker Engine. Docker images have many benefits such as portability (applicable to multiple environments and platforms), customizable, and highly scalable. As you can see below, unlike traditional virtual machines, the Docker engine runs on a layer between the host OS kernel and the isolated application services that are being containerized.

הבנת בניית Docker ותמונות
הפקודה docker build
יכולה להיות מופעלת כדי לאוטומציה של יצירת תמונת תקן של קונטיינר, לאמץ את הפרקטיקה של container-as-code ב-DevOps, ולאינטגרציה של קונטיינריזציה במעגל הפיתוח של הפרויקטים שלך. Dockerfiles הם פשוט קבצי טקסט המכילים הוראות בנייה בהם Docker משתמש כדי ליצור תמונת קונטיינר חדשה שמבוססת על תמונת קונטיינר קיימת.
המשתמש יכול לציין את תמונת הבסיס ורשימת הפקודות להפעלה כאשר תמונת הקונטיינר מופעלת או מתחילה לראשונה. במאמר זה, תלמד כיצד ליצור תמונת Docker המבוססת על Windows מתוך Dockerfile באמצעות קונטיינר של Windows.
תהליך זה יש לו מספר יתרונות על פני השימוש בתמונת קונטיינר מוכנה:
- ניתן לבנות מחדש תמונת קונטיינר למספר גרסאות של Windows – שזה נהדר לבדיקת שינויי קוד על מספר פלטפורמות.
- תהליך יעניק לך יותר שליטה על מה שמותקן בקונטיינר. זה יאפשר לך לשמור על גודל הקונטיינר שלך למינימום.
- מסיבות אבטחה, ייתכן שתרצה לבדוק את הקונטיינר לגבי פגיעות אבטחה וליישם החמירות בטיחותית לתמונת הבסיס.
דרישות מוקדמות/נדרשות
מאמר זה הוא מדריך על למידת איך לבנות תמונת Docker באמצעות Dockerfile. אם תרצה לעקוב, וודא שיש לך את הדרישות הבאות מתוקנות.
- Docker for Windows מותקן. אני אשתמש בגרסה 2.1.0.4 של Docker Community Edition (CE) בסביבת העבודה שלי.
- נדרש גישה לאינטרנט להורדת תמונות Docker
- מערכת ההפעלה Windows 10+ (גרסה 1709 משמשת למדריך זה)
- שיפוץ הווירטואליות משולב
- 5 ג'יגה-בייט של שטח פנוי במחשב המקומי שלך
- PowerShell 5.0+
- מדריך זה משתמש ב Visual Studio Code IDE. אבל תרגיש חופשי להשתמש בכל IDE שתעדיף.
הערה: וודא שאתה מפעיל את הגדרות ה- Windows Containers במהלך ההתקנה של Docker.
הכנות מראש
תצטרך תיקייה ראשית כדי לאחסן את כל תמונות ה-Docker והתכניות שתבנה מהן. כדי לעשות זאת, פתח את המסוף של PowerShell או cmd (תשתמש ב-PowerShell במהלך מאמר זה) וצור תיקייה חדשה בשם C: \ תוכניות.
לאחר שהתיקייה נוצרה, החלף אליה. מזהה זה מעביר את תיקיית העבודה הנוכחית של המסוף אל C: \ Containers כדי להגדיר את הורדות ברירת המחדל לתיקייה זו.
במאמר זה, תקבל קדם צובר. רוב הקבצים שנדרשים לפרויקט זה כבר זמינים. לאחר שהתיקייה נוצרה, בצע Git pull כדי להעתיק את הקבצים הדרושים למאמר זה ממחסן ה-Git של TechSnips לתיקייה C:\Containers. לאחר השלמת הפעולה, בדוק כי התיקייה C:\Containers נראית כמו שמוצג למטה.

הורדת תמונת Docker של IIS במערכת ההפעלה Windows
המשימה הראשונה היא להוריד "תבנית" או תמונת בסיס. ייתכן ותבנה את תמונת ה-Docker האישית שלך מאוחר יותר, אך תצטרך תחילה להוריד תמונה כדי להתחיל. תוריד את התמונות העדכניות ביותר של IIS ו-Windows Server Core שנדרשות למדריך זה. רשימת התמונות המעודכנות ניתן למצוא בדף ה-תמונות הרשמיות של Docker של Microsoft.
סקירת תמונות הבסיס הנוכחיות של Docker
לפני שתוריד את התמונה ממאגר התמונות, בוא נבדוק את התמונות הבסיס הנוכחיות שיש לך במערכת המקומית. כדי לעשות זאת, הפעל חלון פוורשל בתור מנהל והקלד docker images
. פקודה זו תחזיר את כל התמונות במערכת המקומית שלך.
כפי שניתן לראות למטה, התמונות הזמינות ריקות בהתחלה.

הורדת התמונה הבסיסית
עכשיו זה הזמן להוריד את תמונת ה־IIS הבסיסית מ־Docker Hub. כדי לעשות זאת, הרץ את docker pull
כפי שמוצג למטה. תהליך זה עשוי לקחת זמן מסוים עד שיסתיים בהתאם למהירות האינטרנט שלך.

עכשיו הרץ docker images
ואמור לך להיות באפשרותך לראות את תמונת ה־IIS האחרונה של Microsoft Windows הזמינה עבור המדריך הזה.

בדיקת קובץ ה־Dockerfile
בשלב קודם, הורדת קובץ Dockerfile קיים עבור המדריך הזה. בואו נסתכל כעת בדיוק מה כל דבר מהווה.
פתחו את קובץ ה־Dockerfile בעורך הטקסט האהוב עליכם, C:\Containers\Container1\Dockerfile. תוכן קובץ זה משמש להגדרת איך ייתקבע תמונת הקונטיינר בזמן הבנייה.
ניתן לראות הסבר על מה שכל חלק בקובץ זה עושה בהערות שנכתבו באופן טקסטואלי.
בניית תמונת Docker חדשה
יש לך את קובץ ה־Dockerfile מוכן לשימוש ותמונת IIS בסיסית הורדה. עכשיו הגיע הזמן לבנות את תמונת ה־Docker החדשה שלך באמצעות קובץ ה־Dockerfile.
כדי לבנות תמונה חדשה, יש להשתמש בפקודת docker build "tag"
. פקודה זו יוצרת את התמונה. במאמר זה, ניתן לראות מטה שאתה משתמש גם באפשרות -t **
שמחליפה את חלק ה-"tag". אפשרות זו מאפשרת לך לתת לתמונת החדשה שלך שם תג ידידותי וגם להתייחס לקובץ ה־Dockerfile על ידי ציון נתיב התיקייה בה הוא נמצא.
מטה ניתן לראות דוגמה של הבטחה כי הקונסולה נמצאת בתיקיית C:\Containers ואז נבנית תמונת Docker חדשה מה־Dockerfile בתיקייה C:\Containers\Container1.
ברגע שהתחיל, ניתן לראות את התקדמות הפקודה כאשר היא עוברת דרך כל הוראה בקובץ ה־docker שורה אחר שורה:

כאשר הסתיים, עליך להיות עם תמונת Docker חדשה כעת!
עכשיו רוץ את הפקודה docker images
כדי להציג את התמונות שזמינות. ניתן לראות מטה דוגמה לתמונת container1 שנוצרה.

הערה: פקודת
docker build —help
היא פרמטר שימושי להצגת מידע מפורט על הפקודה של docker שמופעלת.
הפעלת תכולת ה־Docker
בנקודה זו, צריך לך להיות עם תמונה חדשה שנוצרה. הגיע הזמן להריץ תכולת תוך־כדי באמצעות התמונה הזו. כדי להביא לך תכולת תוך־כדי חדשה, השתמש בפקודת docker run
.
הפקודה docker run
תפעיל תוכניות Docker חדשות בהתבסס על התמונה container1 שיצרת קודם. תוכל לראות משלם לכך למטה.
שים לב שהפרמטר -d
משמש. הוא אומר לפועל Docker להתחיל את התמונה במצב נתוך ולצאת כאשר התהליך הראשי המשמש להפעלת התוכנית יצא.
כאשר docker run
מסיים, הוא מחזיר את זהות התוכנית הנוצרת. הדוגמה למטה תפסה את זהות זו לתוך משתנה $containerID
כך שנוכל להתייחס אליו בקלות מאוחר יותר.

לאחר שהקונטיינר הופעל, הפעל את הפקודה docker ps
. פקודה זו מאפשרת לך לראות אילו קונטיינרים מופעלים כעת באמצעות כל תמונה. שים לב שהתמונה המופעלת מקבלת אוטומטית שם כינוי (busy_habit במקרה זה). כינוי זה משמש לעיתים כתוספת על זיהוי הקונטיינר.

הרצת קוד בתוך קונטיינר Docker
A new container is built from a new image you just created. Let’s now start actually using that container to run code. Running code inside of a Docker container is done using the docker exec
command.
בדוגמה זו, הרץ את docker exec
כדי לראות פלט PowerShell לפקודת Get-ChildItem
בקונטיינר באמצעות תחביר הפקודה למטה. זה יוודא כי ההוראות בקובץ Dockerfile להסרת קבצי ה-IIS בריריות הצליחו.
תוכל לראות למטה כי הקובץ היחיד שקיים הוא index.html שפירושו כי הקבצים בריריים הוסרו.

כעת הרץ את הפקודה ipconfig
בתוך הקונטיינר כדי לקבל את כתובת ה-IP המקומית של תמונת הקונטיינר כך שתוכל לנסות להתחבר לאתר ה-IIS.
אתה יכול לראות למטה שהופעלה הפקודה ipconfig
בתוך התכולה בדיוק כמו בהפעלה על המחשב המקומי שלך והחזירה את כל מידע ה-IP.

ipconfig
in a Docker containerבדיקת האתר של IIS
עכשיו הגיע הזמן לחשוף את פרי העבודה שלך! זה הזמן לראות אם השרת של IIS הפועל בתכולת Docker משרת כראוי את עמוד ה- index.html.
פתח דפדפן והדבק את כתובת ה-IP4 שנמצאה דרך הפקודה ipconfig
בשורת הכתובות. אם הכל בסדר, אתה צריך לראות הודעת Hello World!! כמו בתמונה למטה.

סקירת היסטוריית Docker
פקודה שימושית אחת לשימוש בעת עבודה עם תכולות Docker היא הפקודה docker history
. אף על פי שאינה בהכרח קשורה ליצירת תמונה או תכולה בעצמה, פקודת ה-docker history
היא פקודה שימושית המאפשרת לך לסקור את השינויים שבוצעו בתמונת התכולה.
אתה יכול לראות למטה ש-docker history
מחזירה את כל פעילות ה- Dockerfile וה-PowerShell שבוצעה בתכולת ה-container1 שבה עבדת.

docker history
ניקוי תמונות Docker הפועלות
השלבים למטה משמשים לניקוי כל התכולות העצורות שרצות במחשב שלך. זה יפנה את השטח בכונן ואת משאבי המערכת.
הרץ את הפקודה docker ps
כדי לראות רשימת התכולות הפועלות במערכת שלך:

עכשיו עצור את התכולות הפועלות באמצעות הפקודה docker stop
:

ולבסוף, אתה יכול להסיר לצמיתות את התכולות העצורות באמצעות הפקודה docker system prune
.
