✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

איך להתחיל לעבוד עם Docker

Tal Ben Shushan
|
קלה
|
Jul 18, 2018
alt="facebook"alt="linkedin"
להרשמה לניוזלטר

רקע:

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

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

כאשר מתכנת מבקש מאנשי השרתים להקים לו שרת, הוא דורש תחילה הגדרות בסיסיות:

• מעבד: 4 ליבות

• זיכרון: 8GB

• נפח דיסק: 1TB

• מערכת הפעלה: Windows Server 2016 או נאמר Centos 7 \ Red Hat

• כתובת IP: כתובת שאיתה יוכל לעבוד

לאחר מכן המתכנת מתקין את הכלים שלו (Visual Studio  Apache2, TomCat,או .net Framework), ומתחיל לעבוד על התוכנה אותה הוא צריך לפתח.

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

נסתכל על מצב מוכר, וירטואליזציה שאנו מכירים נראית לרוב כך:

בתצורה זו אנו מתקינים את ה- Hypervisor שהוא Hyper-V או VMware ועליו מכונות, ועל כל מכונה את השירות שאנו רוצים, לדוגמא:

• App1 – LAMP Apache, MySql, PHP

• App2 – Microsoft .Net Framework, IIS

• App3 – Microsoft DNS

על כל שרת מותקן שירות אחד וכל אחד מה-VM  צורך משאבים.

אז מה בדיוק עושה Docker?  

הדוקר משתמש ב- Container (מכולה). כל Container מכיל בתוכו אפליקציה (Apache, IIS, DNS וכו’) ואותה אפליקציה שנמצאת בתוך המכולה לא יודעת על מכולות אחרות שנמצאות איתה באותו השרת. כך למעשה האפליקציה נשארת מבודדת מיתר היישומים, וכל התוכנות שהיא צריכה על מנת לעבוד (שירותים, התקנות נלוות וכו’) נמצאות איתה בתוך המכולה.

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

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

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

העבירו את המכולה עם המטבח מ- Ship1 לספינה Ship2 והמכולה והתוכן שלה (האפליקציה) לא מודע בכלל שהזיזו אותה.

את ה- Container ניתן להוריד מה-Docker Hub. נוכל להוריד Container שמכיל Apache ופועל איתו, רק נצטרך להגדיר כמה הגדרות בסיסיות כמו כתובת IP ואז ה- Container רץ ומספק את השירות שהוא אמור לספק, כך למעשה הוא מבודד משאר ה- Containers ששוכנים במכונה הפיזית.

מונחים בסיסיים ב - Docker

Docker בנוי מ-3 שכבות:

• Container – המכולה שמכילה את האפליקציה עצמה.

יוצרים את קבצי הבסיס של ה Image, של האפליקציה שלכם ואז מכניסים אותה לתוך Image, את ה Image אפשר להריץ, אפשר לשנות, אפשר ל”דחוף” ל Docker Hub ולתת גם לצוות שלכם או לאנשים אחרים להוריד

• Services – השירותים בתוך ה Container שהאפליקציה מסתמכת עליהם

נאמר שיש לכם Image, כעת אתם רוצים להריץ את ה Image בתצורת Cluster כך שיש  Load Balance בין 10 “מכולות” אז ניתן לייצר שירות כזה או אפילו שירות נוסף לזה שמציג לי את כל המכולות והכתובות שלהם

• Stack – מה שמאחד את האפליקציה והשירותים לכדי תצורה אחת ומפעילה את כל המכולה

ה Docker מכיל את הפקודה docker שבא נשתמש על מנת לתפעל את המערכת.

למערכת יש 4 כלים:

• Image – סוג של VM מוכן שאותו ניתן להריץ בתוך Container ניתן לכבות אותו ולדחוף אותו ל Docker Hub שם מתכנתים אחרים יכולים להוריד אותו או להריץ את המכונה ישר משם

• Container – ברגע שמריצים את ה Image (מה שמכיל את האפליקציה) נוצר “מכולה” ובתוכה האפליקציה רצה

• Network –  כלי הרשת, כך למעשה נגדיר ונחבר את המכונה לכתובת IP מסוימת שיהיה ניתן להגיע אל ה- Container

• Data Volumes – איפה שה Container רץ, ככל שהוא גדול יותר כך יותר נפח של אחסון אנחנו נצטרך

התקנת Docker

אנחנו נתקין את Docker CE ל- Centos 7, להלן הדרישות:

• CentOS 7 מעודכן

• Windows 10 על מנת לבדוק את ה Apache -ושאר ההגדרות

תחילה, נפתח את הטרמינל

הגדירו Repository

[[email protected] ~]# sudo yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

נגדיר Repo נוסף

[[email protected] ~]# sudo yum-config-manager \

–add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

כעת נתקין את Docker

[[email protected] ~]# sudo yum install docker-ce

עכשיו אפשר להפעיל אותו

[[email protected] ~]# sudo systemctl start docker

נאפשר אותו בעלייה הבאה

[[email protected] ~]#  sudo systemctl enable docker

נשתמש בפקודה Hello לראות שהכל תקין ואנחנו מקבלים הודעת ברוך הבא:

[[email protected] ~]# docker run hello-world

על מנת לבדוק גירסה נריץ את הפקודה

[[email protected] ~]# docker –version

במאמר הבא נסביר כיצד ליצור Images, איך לבצע התחברות ל Docker HUB, כיצד לבנות Services ועוד.

מאת: טל בן שושן, יועץ לאבטחת מידע

רקע:

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

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

כאשר מתכנת מבקש מאנשי השרתים להקים לו שרת, הוא דורש תחילה הגדרות בסיסיות:

• מעבד: 4 ליבות

• זיכרון: 8GB

• נפח דיסק: 1TB

• מערכת הפעלה: Windows Server 2016 או נאמר Centos 7 \ Red Hat

• כתובת IP: כתובת שאיתה יוכל לעבוד

לאחר מכן המתכנת מתקין את הכלים שלו (Visual Studio  Apache2, TomCat,או .net Framework), ומתחיל לעבוד על התוכנה אותה הוא צריך לפתח.

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

נסתכל על מצב מוכר, וירטואליזציה שאנו מכירים נראית לרוב כך:

בתצורה זו אנו מתקינים את ה- Hypervisor שהוא Hyper-V או VMware ועליו מכונות, ועל כל מכונה את השירות שאנו רוצים, לדוגמא:

• App1 – LAMP Apache, MySql, PHP

• App2 – Microsoft .Net Framework, IIS

• App3 – Microsoft DNS

על כל שרת מותקן שירות אחד וכל אחד מה-VM  צורך משאבים.

אז מה בדיוק עושה Docker?  

הדוקר משתמש ב- Container (מכולה). כל Container מכיל בתוכו אפליקציה (Apache, IIS, DNS וכו’) ואותה אפליקציה שנמצאת בתוך המכולה לא יודעת על מכולות אחרות שנמצאות איתה באותו השרת. כך למעשה האפליקציה נשארת מבודדת מיתר היישומים, וכל התוכנות שהיא צריכה על מנת לעבוד (שירותים, התקנות נלוות וכו’) נמצאות איתה בתוך המכולה.

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

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

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

העבירו את המכולה עם המטבח מ- Ship1 לספינה Ship2 והמכולה והתוכן שלה (האפליקציה) לא מודע בכלל שהזיזו אותה.

את ה- Container ניתן להוריד מה-Docker Hub. נוכל להוריד Container שמכיל Apache ופועל איתו, רק נצטרך להגדיר כמה הגדרות בסיסיות כמו כתובת IP ואז ה- Container רץ ומספק את השירות שהוא אמור לספק, כך למעשה הוא מבודד משאר ה- Containers ששוכנים במכונה הפיזית.

מונחים בסיסיים ב - Docker

Docker בנוי מ-3 שכבות:

• Container – המכולה שמכילה את האפליקציה עצמה.

יוצרים את קבצי הבסיס של ה Image, של האפליקציה שלכם ואז מכניסים אותה לתוך Image, את ה Image אפשר להריץ, אפשר לשנות, אפשר ל”דחוף” ל Docker Hub ולתת גם לצוות שלכם או לאנשים אחרים להוריד

• Services – השירותים בתוך ה Container שהאפליקציה מסתמכת עליהם

נאמר שיש לכם Image, כעת אתם רוצים להריץ את ה Image בתצורת Cluster כך שיש  Load Balance בין 10 “מכולות” אז ניתן לייצר שירות כזה או אפילו שירות נוסף לזה שמציג לי את כל המכולות והכתובות שלהם

• Stack – מה שמאחד את האפליקציה והשירותים לכדי תצורה אחת ומפעילה את כל המכולה

ה Docker מכיל את הפקודה docker שבא נשתמש על מנת לתפעל את המערכת.

למערכת יש 4 כלים:

• Image – סוג של VM מוכן שאותו ניתן להריץ בתוך Container ניתן לכבות אותו ולדחוף אותו ל Docker Hub שם מתכנתים אחרים יכולים להוריד אותו או להריץ את המכונה ישר משם

• Container – ברגע שמריצים את ה Image (מה שמכיל את האפליקציה) נוצר “מכולה” ובתוכה האפליקציה רצה

• Network –  כלי הרשת, כך למעשה נגדיר ונחבר את המכונה לכתובת IP מסוימת שיהיה ניתן להגיע אל ה- Container

• Data Volumes – איפה שה Container רץ, ככל שהוא גדול יותר כך יותר נפח של אחסון אנחנו נצטרך

התקנת Docker

אנחנו נתקין את Docker CE ל- Centos 7, להלן הדרישות:

• CentOS 7 מעודכן

• Windows 10 על מנת לבדוק את ה Apache -ושאר ההגדרות

תחילה, נפתח את הטרמינל

הגדירו Repository

[[email protected] ~]# sudo yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

נגדיר Repo נוסף

[[email protected] ~]# sudo yum-config-manager \

–add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

כעת נתקין את Docker

[[email protected] ~]# sudo yum install docker-ce

עכשיו אפשר להפעיל אותו

[[email protected] ~]# sudo systemctl start docker

נאפשר אותו בעלייה הבאה

[[email protected] ~]#  sudo systemctl enable docker

נשתמש בפקודה Hello לראות שהכל תקין ואנחנו מקבלים הודעת ברוך הבא:

[[email protected] ~]# docker run hello-world

על מנת לבדוק גירסה נריץ את הפקודה

[[email protected] ~]# docker –version

במאמר הבא נסביר כיצד ליצור Images, איך לבצע התחברות ל Docker HUB, כיצד לבנות Services ועוד.

מאת: טל בן שושן, יועץ לאבטחת מידע

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Tal Ben Shushan
בואו נעבוד ביחד
צרו קשר