דוקר על חלונות? התחל ללמוד עכשיו או…!

אם אתה חדש לקונטיינרים ולדוקר ועובד בעיקר עם Windows, אתה מוזמן להתעניין. במאמר זה, תלמד כיצד להגדיר את דוקר על Windows 10 באמצעות Docker Desktop for Windows או מוכר פשוט כ Docker Desktop במאמר זה.

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

דרישות קדם צורך עבור Docker ב-Windows

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

  • חיבור אינטרנט להורדת נתונים בנפח של 800 מגה-בייט+
  • Windows 10 בגרסה 64 סיביות, רץ בגרסת Pro, Enterprise או Education עם גרסה 1703 או חדשה יותר. זה נחוץ כדי להריץ Hyper-V על Windows 10.
  • A CPU with SLAT (nested paging) compatibility. All AMD/Intel processors since approximately 2008 are SLAT compatible
  • לפחות 4GB של זיכרון RAM
  • וירטואליזציה בצורת BIOS המסומנת לפעמים כ- Virtualization Technology או VTx. עליה יש להיות מופעלת ולהופיע כ- Enabled בכרטיסיית הביצועים של מanager המשימות, כמו שמוצג למטה.
Enabled BIOS virtualization shown in Windows Task Manager

הורדה והתקנה של Docker Desktop

בתחילה, עליך להוריד ולהתקין את Docker Desktop כדי להשיג את Docker על Windows. Docker Desktop זמין בשני גרסאות; גרסה יציבה וגרסה לבדיקות.

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

אזהרה: בעת התקנה, Docker Desktop יבקש ממך להתקין את המכונה הוירטואלית Hyper-V אם היא טרם הותקנה. בעזרת המכונה הוירטואלית Hyper-V, נמנעת הפעלת מכונות וירטואליות אחרות בסביבת משתמש כגון VirtualBox, VMWare וכו '. תמיכת Hyper-V ב- VirtualBox ו- VMWare מוגבלת אך תהיה זמינה בקרוב.

יש לך גם את האפשרות להוריד את Docker Desktop ישירות מ- Docker.com או דרך מנהל החבילות של Windows, Chocolatey. נשאר רק לדקדק בכל שיטה בקצרה.

מ- Docker.com

להוריד את Docker Desktop ישירות מ-docker.com, ניתן לעבור אל דף המוצר, להירשם לחשבון ולהוריד אותו משם. זה מועדף אם אתה מתכנן להשתמש ב-Docker בסביבת ייצור על ידי הרשמה לחשבון.

עם זאת, אם אתה רק בודק את Docker לפעם הראשונה, ניתן גם להוריד אותו ישירות, מה שהופך את התהליך הרבה יותר פשוט.

כאשר ה-EXE נורד, ריץ את הקובץ הנפתח ולחץ על ההצעות, מקבל את כל ברירות המחדל.

כאשר מתבקשים אם אתה מתכנן להשתמש בקונטיינרים של Windows במקום קונטיינרים של Linux, כפי שמוצג למטה, אל תסמן את תיבת הסימון. תשתמש בקונטיינרים של Linux במאמר זה.

Installing Docker Desktop

לאחר התקנה הושלמה, הפעל מחדש את המחשב שלך.

בבחירת האפשרות להשתמש בקונטיינרים של Windows או קונטיינרים של Linux, Docker מצרף תמונות לליבת Windows או לליבת Linux. תוכל לשנות הגדרה זו בכל עת לאחר התקנה על ידי לחיצה ימנית על סמל Docker בתוך סרגל המשימות ובחירת "החלף לקונטיינרים של Windows", כפי שמוצג למטה.

Switching to Windows containers

בשימוש ב-Chocolatey

האפשרות השנייה להוריד ולהתקין את Docker Desktop היא דרך Chocolatey. Chocolatey מתאמת אוטומטית המון מהמשימות של הורדה/התקנה עבורך. כדי לעשות זאת, פתח חלון קונסול (cmd או PowerShell) כמנהל והפעל את הפקודה הבאה כדי להוריד ולהתקין את התוכנית בקפיצה אחת.

choco install docker-desktop

כשהתהליך הושלם, אנא הפעל מחדש את Windows 10.

אם ברצונך לנסות את הגרסה הבדיקה במקרה כלשהו, תוכל להוריד ולהתקין אותה על ידי הרצת הפקודה choco install docker-desktop --pre.

אימות ההתקנה של Docker Desktop

לאחר ההתקנה, Docker Desktop רץ אוטומטית כשירות המספקת את Docker על Windows. הוא מוצג באזור המשימות כאשר אתה נכנס למערכת לאחר האתחול. אך איך בדיוק ניתן לדעת שהוא עובד?

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

לבסוף, הפעל את Docker כדי להוריד ולהפעיל דוגמא של תמונת קונטיינר בשם hello-world על ידי הרצת הפקודה docker run hello-world. אם הכל בסדר, תראה פלט כמו בדוגמה למטה.

A successful test image run via Docker Desktop

הפעלת פקודות בקונטיינרים של Docker

הותקן Docker Desktop ווודאת שהכל בסדר? וכעת מה? כדי להתחיל עם Docker ב-Windows, משימה נפוצה היא להריץ פקודות ב-Docker container. דרך הפקודה docker run, אפשר לשלוח פקודות דרך המארח (ה-PC שלך ב-Windows 10) ישירות לתוך ה-container שפעיל.

כדי להריץ פקודות ב-container עם docker run, תציין תחילה את שם הדמות (image) ואחריה תכתוב את הפקודה. כדי להתחיל, תגיד ל-Docker להריץ את הפקודה hostname בתוך קונטיינר שנקרא alpine, כפי שמוצג למטה.

> docker run alpine hostname
b74ff46601af

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

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

> docker run -it alpine sh
/ #

כשתסיימו בטרמינל, הקלד exit כדי לחזור ל-Windows 10.

גישה לקבצים מהמארח של Docker בתוך הקונטיינר

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

כדי ליצור קישור, יש ליצור תיקייה בכונן מקומי. לדוגמה, נשתמש ב-E:\ ונקרא לה input. ניצור אז מסמך טקסט חדש בשם file.txt בתיקייה. תרגיש להשתמש בנתיב ובשם הקובץ שתרצה.

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

מתחת תמצא דוגמה של הרכבת התיקייה כולה E:\ במחשב המארח בצורה של /home/TEST בתוך תוך התוכנה בלינוקס.

> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine

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

Sharing a Docker drive

אם יצרת את הקובץ file.txt בתיקיית Windows 10 כפי שתואר לעיל, הרץ cat /home/TEST/input/file.txt. תראה שהתוכן מוצג.

עכשיו, מחק את התיקייה input שברקעיה יצרת והרץ שוב את הפקודה cat .... שים לב שהמסדר ידווח כי הקובץ לא קיים יותר.

Working with files in Docker containers

מיפוי יציאות הרשת

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

ראשית, הפעל תמונת דוגמה שתריץ דף אינטרנט לדוגמה. הורד והפעל את תמונת ה-Docker הנקראת dockersamples/static-site. תשתמש ב-docker container run כדי לעשות זאת.

הפקודה הבאה עושה ארבע פעולות בבת אחת:

  • הורדת תמונת Docker מ-Docker Hub בשם static-site ב-"docker-samples"
  • הפעלת מופע של קונטיינר מתוך התמונה static-site
  • התרחקות מיידית של הקונטיינר מרקע הטרמינל (—detach)
  • הפעלת יציאות הרשת של הקונטיינר לזמן הרצה למערכת ה-Windows 10 (—publish-all)
docker container run --detach --publish-all dockersamples/static-site
## תחביר חלופי/מקוצר שעושה את אותו הדבר:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site

ברגע שהתמונה תתחיל לרוץ, Docker יחזיר את מזהה הקונטיינר שהופעל, כפי שמוצג למטה.

Docker container ID returned from running a container

פרסום יציאות הרשת

מאז שנעשה שימוש בפרמטר --publish-all, יציאות כוננות מקומיות כעת ממופות לערימת הרשת של המיכל. תוכל להשתמש בתת־פקודת docker ps כדי לרשום את כל המיכלים הפועלים כולל היציאות שמוקצות לכל אחד מהמיכלים הפועלים. בדוגמה למטה, יציב אחד פועל ומפרסם את יציאת המיכל 32777 של המארח ליציאת המיכל 80 ויציאת המארח 32776 ליציאת המיכל 443.

Showing port mapping of Docker container

ב-Windows, Docker מקצה יציאות אקראיות למיכלים בשימוש בפרמטר --publish-all אלא אם נקבעו באופן מפורש.

עכשיו פתח דפדפן רשת ונווט לכתובת http://localhost:32777 או ליציאת המיכל ש-Docker הקצה ליצור קישור ליציאה 80 כפי שמוצג על ידי docker ps. אם הכל הולך כצפוי, אתה צריך לראות את עמוד האינטרנט המוצג למטה.

Resulting webpage running in the Docker container

שינוי של יציאות הפרסום

כעת יש לך מיכל Docker רץ ב-Docker ב-Windows שמספק עמוד אינטרנט פשוט. מזל טוב! אבל כעת יש לך צורך לציין קישור ספציפי ליציאה שאינו מתבסס על בחירה אקראית של יציאות עם --publish-all. אין בעיה. השתמש בפרמטר -p.

ראשית, עצור את המיכל הפועל על ידי ציון מחרוזת ייחודית של המזהה שלו. תוכל למצוא את מזהה המיכל הזה על ידי הרצת docker ps. לאחר שתזהה את מזהה המיכל, עצור את המיכל והתחל מיכל חדש בזמן שמייעדים ל-Docker להקצות יציאה ספציפית לפרסום.

ה-תחביר לציון פורט הוא <external port>:<container port>. עבור כל פורט שברצונך לפרסם, השתמש במתג --publish או -p עם מספרי הפורטים החיצוני והתקופסת כפי שמוצג למטה.

> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site

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

עכשיו עבור לדפדפן האינטרנט שלך ונווט אל localhost:1337. זכור, אתה לא משנה את התמונה והיא תמיד תקשיב בפורט 80; אתה משנה את כלל התרגום של הפורט בתצורת הדוקר שמאפשר לך להתחבר למיכל.

Webpage being served up on port 1337

עצירת כל המיכלים

על ידי שימוש ב-docker stop, אתה יכול לעצור מיכל אחד אבל איך אפשר לעצור מספר מיכלים בו זמן אחד? דרך אחת לעשות זאת היא לספק מספר מזהה של מיכלים מרוחבים ברווח. ניתן לראות למטה דוגמה לכיצד לעצור שלושה מיכלים עם מזהה של fd50b0a446e7, 36ee57c3b7da, ו-7c45664906ff.

> docker stop fd50 36ee 7c45

אם אתה מנהל תוכניות Docker ב־PowerShell, תוכל גם להשתמש בקיצור דרך כדי לעצור את כל התוכניות. תן רשימת מזהי תוכניות דרך docker ps -q לפרמטר העצירה באמצעות הרחבת פקודה של PowerShell docker stop (docker ps -q).

לוודא שכל התוכניות עצורות, בדוק שאין תוכניות מופיעות כאשר אתה מקליד את docker ps.

ניקוי

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

כדי למחוק תוכנית יחידה, השתמש בפרמטר המחיקה של התוכנית rm כמו שמוצג למטה.

> docker container rm <container ID>

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

> docker container prune

Source:
https://adamtheautomator.com/docker-windows/