אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » docker » דוקר – כניסה לתוך קונטיינר ופעולות בתוכו

דוקר – כניסה לתוך קונטיינר ופעולות בתוכו

רן בר-זיק יולי 23, 2017 7:07 am 2 תגובות

איך נכנסים לתוך קונטיינר, איך עובדים בתוכו ואיתו כאשר אני מדגים על MySQL כולל עבודה עם ייבוא/ייצוא

המאמר הקודם על דוקרDocker – הקדמה
המאמר הבא על דוקרDocker – יצירת קובץ הגדרות – image
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

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

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

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

docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6

בואו ונעבור שוב על הפקודה הזו:

docker run –name mysql – הפקודה של docker run היא יצירת הקונטיינר, מה שמגיע אחרי הפלאג של name הוא השם שאנו בוחרים לקונטיינר הזה.

e- זה פלאג שלא הכרנו, הוא מאפשר להכניס משתני סביבה לתוך הקונטיינר עם יצירתו. במקרה הזה אני מכניס את משתנה הסביבה MYSQL_ROOT_PASSWORD. איך אני יודע שאני חייב להשתמש בו? כי כתוב את זה בדוקומנטציה של קובץ ההגדרות הרשמי:

MYSQL_ROOT_PASSWORD
This variable is mandatory and specifies the password that will be set for the MySQL root superuser account

d- אומר שהקונטיינר ירוץ ברקע.

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

אחרי שהרצתי את הפקודה, אני יכול להריץ את

docker ps -a

ולראות שהקונטיינר הזה פעיל!

mysql docker פעיל לחלוטין ועובד

עכשיו מה? בניגוד ל-PHP, למסד נתונים אני צריך להתחבר. יש כמה דרכים להתחבר למסד נתונים אבל הדרך הפשוטה ביותר היא דרך שורת הפקודה. כן, בדיוק כמו MySQL שמותקן בלינוקס אני יכול להכנס אל הקונטיינר ולהריץ שאילתה! איך עושים את זה? פשוט וקל! הכירו את פקודת docker exec מדובר בפקודה שיכולה להריץ דברים על הקונטיינר. במקרה הזה אני רוצה להריץ את ה-bash שיש בקונטיינר של MySQL. מה זה bash? זה הטרמינל של הקונטיינר. זה הכל.

docker exec -it mysql bash

אז מה יש לנו פה? docker exec היא הפקודה

it- זה פלאגים (נפרדים) שבגדול גורמים לפקודה לפתוח shell משלה.

mysql זה השם של הקונטיינר. שימו לב שזה השם שלו – mysql כפי שהגדרתי עם docker run.

bash זו הפקודה שאני רוצה להריץ.

ברגע שאני עושה את זה אני נכנס לתוך המכונה. אפשר לראות את השם שלה שהוא בעצם hash. אני יכול לשוטט במכונה ולהריץ פקודות כרצוני, אפילו ls -al שמשמעותו בלינוקסית (למי שלא יודע) זה הצגת כל הקבצים והספריות במקום הנוכחי.

אחרי שהפעלתי את docker exec יש לי גישה למכונההצלחה בהרצת mysql

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

מי שמכיר קצת יותר לינוקס בטח מבין שאני בכלל לא חייב חלעבור דרך ה-bash, למה לא להגיע מייד אל הסרוויס של MySQL עם docker exec? באופן עקרוני אין שום בעיה לעשות את זה, במקום לקרוא ל-bash, אני אקרא ל-mysql ולא אשכח להכניס את הסיסמה כדי שאני לא אצטרך להקליד אותה כמו ליימעך.

 docker exec -it mysql mysql -pmy-secret-pw

אבל ברוב הפעמים יש לי כבר קובץ SQL שאני רוצה להכניס אותו למסד הנתונים שלי. איך אני עושה את זה? גם כאן docker exec בא לעזרתי. אם אני עובד בלינוקס, אז MySQL מאפשר לי בקלות לייבא או לייצא נתונים. הדבר היחידי שאני צריך זה ליצור מסד נתונים. בדוגמה הזו יצרתי מסד נתונים (באמצעות CREATE DATABASE) בשם internet ואני מייבא אליו את מסד הנתונים של האתר הזה.

cat il.sql | docker exec -i mysql /usr/bin/mysql -pmy-secret-pw internet_il

זה הכל. יש כאן קצת סינטקס לינוקסי אבל לא צריך להבהל – בגדול:

cat il.sql – אני לוקח את קובץ il.sql. שימו לב שהוא חייב להיות במקום שבו אני מריץ את הפקודה. באופן דיפולטיבי, ה-shell של דוקר נפתח בחלונות בתיקית המשתמש.

docker exec – אנחנו מכירים

i- פלאג של אינטראקטיביות, מונע מהחיבור להסגר עד סוף הפעולה.

mysql – השם של הקונטיינר

/usr/bin/mysql -pmy-secret-pw internet_il – זו הפקודה שאני מריץ בלינוקס על מנת לייבא נתונים כאשר אני משתמש בסיסמה ובשם מסד הנתונים. זה הכל.

ייצוא הוא פשוט אף יותר עם השורה הזו אני מבצע ייצוא של internet_il לקובץ backup.sql.

docker exec mysql /usr/bin/mysqldump -u root -p=my-secret-pw internet_il > backup.sql

והנה סרטון שבו אני מסביר איך זה עובד:

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
המדריך על דוקר
docker MySQL

2 תגובות

  1. hez הגב יולי 24, 2017 בשעה 2:30 pm

    כנראה פיספסתי משהוא.

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

    • רן בר-זיק הגב אוגוסט 6, 2017 בשעה 3:39 pm

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

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד