אנדרואיד

כיצד לבנות תמונות הדוקר עם dockerfile - -

Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.

Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.

תוכן עניינים:

Anonim

תמונת Docker היא התבנית של מיכלי Docker המכילה את היישום ואת כל מה שאתה צריך כדי להריץ את היישום. מיכל הוא מופע זמן ריצה של תמונה.

במדריך זה נסביר מה זה Dockerfile, איך ליצור תמונה וכיצד לבנות תמונה עם Dockerfile.

מה זה Dockerfile

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

תמונות ה- Docker מורכבות מסדרה של שכבות של מערכת קבצים המייצגות הוראות ב- Dockerfile של התמונה שמרכיב יישום תוכנה להפעלה.

קובץ ה- Docker לובש את הטופס הבא:

# Comment INSTRUCTION arguments

INSTRUCTION אינן תלויות רישיות, אך האמנה היא להשתמש ב- UPPERCASE לשמותיה.

להלן הרשימה עם תיאור קצר של כמה מההוראות Dockerfile הנפוצות ביותר:

  • ARG - הוראה זו מאפשרת לך להגדיר משתנים שניתן לעבור בזמן הבנייה. ניתן גם להגדיר ערך ברירת מחדל. FROM - תמונת הבסיס לבניית תמונה חדשה. הוראות אלה צריכות להיות ההוראות הראשונות ללא התגובה ב- Dockerfile. החריג היחיד מכלל זה הוא כאשר ברצונך להשתמש במשתנה בטיעון FROM . במקרה זה, ניתן להקדים FROM ידי הוראות ARG אחת או יותר. LABEL - משמש להוספת מטא נתונים לתמונה, כגון תיאור, גרסה, מחבר.. וכו '. ניתן לציין יותר מ- LABEL , וכל הוראות LABEL הן צמד ערכי מפתח. RUN - הפקודות שצוינו בהוראות זו יבוצעו במהלך תהליך הבנייה. כל הוראות RUN יוצרות שכבה חדשה מעל התמונה הנוכחית. הוספה - משמש להעתקת קבצים וספריות מהמקור שצוין ליעד שצוין בתמונת הדוקר. המקור יכול להיות קבצים או ספריות מקומיים או כתובת אתר. אם המקור הוא ארכיב זפת מקומי, הוא נפרק אוטומטית לתמונת ה- Docker. COPY - דומה ל- ADD אך המקור יכול להיות רק קובץ או ספרייה מקומיים. ENV - הוראה זו מאפשרת לך להגדיר משתנה בסביבה. CMD - משמש לציון פקודה שתבוצע כשאתה מפעיל מיכל. אתה יכול להשתמש רק בהוראות CMD אחת ב- Dockerfile שלך. ENTRYPOINT - בדומה ל- CMD , הוראות זו מגדירה איזו פקודה תבוצע בעת הפעלת מכולה. WORKDIR - הנחיה זו מגדירה את ספריית העבודה הנוכחית להוראות RUN , CMD , ENTRYPOINT , COPY ו- ADD . USER - הגדר את שם המשתמש או ה- UID לשימוש בעת הפעלת הוראות RUN , CMD , ENTRYPOINT , COPY ו- ADD . VOLUME - מאפשר לך לחבר ספריית מכונות מארח למכולה. EXPOSE - משמש לציון היציאה בה המכל מקשיב בזמן ריצה.

כדי, לא לכלול קבצים וספריות .dockerignore לתמונה, צור קובץ .dockerignore בספריית ההקשר. התחביר של .dockerignore דומה לזה של קובץ ה- .gitignore של ה- Git.

לקבלת התייחסות מלאה והסבר מפורט על הוראות Dockerfile ראו את דף ההתייחסות הרשמי של Dockerfile.

צור קובץ Dockerfile

התרחיש הנפוץ ביותר בעת יצירת תמונות Docker הוא לשלוף תמונה קיימת ממרשם (בדרך כלל מ- Docker Hub) ולציין את השינויים שתרצו לבצע בתמונת הבסיס. תמונת הבסיס הנפוצה ביותר בעת יצירת תמונות Docker היא Alpine מכיוון שהיא קטנה ומותאמת להפעלה ב- RAM.

ה- Docker Hub הוא שירות רישום מבוסס ענן אשר בין פונקציות אחרות משמש לשמירה על תמונות ה- Docker במאגר ציבורי או פרטי.

בדוגמה זו ניצור תמונת Docker לשרת Redis. אנו נשתמש באובונטו האחרונה 18.04 כתמונת בסיס.

ראשית, צור ספרייה שתכיל את ה- Dockerfile וכל הקבצים הדרושים:

mkdir ~/redis_docker

נווט אל הספרייה וצור את ה- Dockerfile הבא:

cd ~/redis_docker nano Dockerfile דוקרפיל

FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD

בואו נסביר את המשמעות של כל אחת מהשורות ב- Dockerfile:

  • בשורה 1 אנו מגדירים את תמונת הבסיס. הוראות RUN המתחילות בשורה 3 תעדכן את אינדקס apt, תתקין את חבילת "redis-server" ותנקה את המטמון apt. הפקודות המשמשות בהוראות זהות לפקודות בהן היית משתמשת להתקנת redis מחדש בשרת אובונטו. הוראות ה- EXPOSE מגדירה את היציאה עליה מקשיב שרת מחדש. בשורה האחרונה אנו משתמשים בהוראת CMD כדי להגדיר את פקודת ברירת המחדל. זה יבוצע כאשר המכולה פועלת.

שמור את הקובץ וסגור את העורך.

בניית התמונה

השלב הבא הוא בניית התמונה. לשם כך, הפעל את הפקודה הבאה מהספרייה בה נמצא Dockerfile:

docker build -t linuxize/redis.

האפשרות -t מציינת את שם התמונה ובאופן אופציונלי שם משתמש ותג בפורמט 'שם משתמש / שם תמונה: תג'.

התפוקה של תהליך הבנייה תיראה כך:

Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest

בסיום תהליך הבנייה התמונה החדשה תופיע ברשימת התמונות:

docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB

מפעיל מכולה

כעת, לאחר שנוצרת התמונה, אתה מריץ ממנה מיכל על ידי ריצה:

docker run -d -p 6379:6379 --name redis linuxize/redis

האפשרויות -d אומרות לדוקר להפעיל את המכולה במצב מנותק, האפשרות -p 6379:6379 תפרסם את היציאה 6379 למכונה המארחת --name redis מציינת את שם המכולה. הטיעון האחרון linuxize/redis הוא שם התמונה, המשמשת להפעלת המיכל.

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

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis

כדי לוודא שהכל עובד כמו שצריך להשתמש ב- redis-cli כדי להתחבר למיכל הדוקר:

redis-cli ping

על שרת ה- redis להגיב באמצעות PONG .

סיכום

מדריך זה כיסה רק את היסודות של השימוש ב- Dockerfiles לבניית תמונות. למידע נוסף על כתיבת Dockerfiles ושיטות העבודה המומלצות המומלצות ראה שיטות מומלצות לכתיבת Dockerfiles.

הדוקר