כיצד להעביר יציאה ב-Docker

Kyzd Lh Byr Yzy H B Docker



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

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

פוסט זה ידגים:







כיצד להעביר יציאה ב-Docker באמצעות תג '-p' או '–publish'.

כדי להעביר יציאה ב-Docker, המשתמש צריך לפרסם את יציאת הקונטיינר במארח Docker. למטרה זו, הפעל את הקונטיינר על המארח של docker באמצעות ' -עמ' ' או ' -לְפַרְסֵם 'תג ב' דוקר ריצת ' פקודה.



להדגמה נכונה, עקוב אחר ההוראות שלהלן.



שלב 1: צור Dockerfile

ראשית, צור קובץ והגדר את שמו כ' Dockerfile '. קובץ זה מכיל את ההוראות הטקסטואליות ליצירת התבנית של הקונטיינר של Docker. לדוגמה, הבה נעצור את תוכנית Golang הפשוטה באמצעות הקטע שלהלן ב- Dockerfile:





מגולאנג: 1.8

WORKDIR / ללכת / src / אפליקציה

COPY main2.go .

RUN לך לבנות -או שרת אינטרנט .

לַחשׂוֹף 8080

CMD [ './שרת אינטרנט' ]

בקטע הנתון:

  • ' מ הפקודה משמשת להגדרת תמונת הבסיס.
  • ' WORKDIR ' מגדיר את ספריית העבודה של המכולה.
  • ' עותק ' הפקודה תיצור עותק של קובץ התוכנית בנתיב שצוין מיכל.
  • ' לָרוּץ ' הפקודה תבצע את הפקודה שצוינה במיכל.
  • ' לַחשׂוֹף ' הפקודה מציינת את היציאה שבה יקשיבו למיכל.
  • ' CMD ” מציין את נקודות ההפעלה של המכולה.

שלב 2: צור תוכנית Golang

לאחר מכן, צור קובץ נוסף בשם ' main2.go ' והדבק את תוכנית Golang המסופקת למטה שמדפיסה מחרוזת פשוטה ביציאה ' 8080 ”:



החבילה הראשית

יְבוּא (

'fmt'

'עֵץ'

'נטו/http'

)

מטפל בפונקציות ( ב http.ResponseWriter, ר * http.Request ) {

html := `

DOCTYPE html >

< html >

< רֹאשׁ >

< כותרת > שלום גולנג ! כותרת >

< סִגְנוֹן >

גוּף {

צבע רקע: #D2B48C;

}

.מְכוֹלָה {

יישור טקסט: מרכז;

ריפוד: 50px;

}

סִגְנוֹן >

רֹאשׁ >

< גוּף >

< div מעמד = 'מְכוֹלָה' >

< h1 > שלום ! ברוכים הבאים למדריך LinuxHint h1 >

div >

גוּף >

html >`

w.Header ( ) .מַעֲרֶכֶת ( 'סוג תוכן' , 'טקסט/html' )

fmt.Fprint ( ב , html )

}

func main ( ) {

http.HandleFunc ( '/' , מטפל )

log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , אפס ) )

}

שלב 3: צור תמונת מצב של מיכל

כעת, צור תמונת מצב עבור הקונטיינר מתוך Dockerfile שצוין לעיל. למטרה זו, ראשית, נווט אל הספרייה שבה נוצר ה-Dockerfile באמצעות ' cd ' פקודה:

לאחר מכן, צור את תמונת המכולה החדשה באמצעות הפקודה הנתונה:

בניית docker golang-img .

התוצאה הנתונה מראה שהתמונה נוצרת בהתאם להקשר הבנייה שסופק.

שלב 4: העבר את נמל המארח לנמל המכולות

כעת, הפעל את המכולה והעבר את יציאת המארח ליציאת המכולה כדי לגשת לאפליקציית dockerize מחוץ לקונטיינר במחשב מקומי. למטרה זו, הפעל את 'docer run –name <שם המשך> -p <מארח-פורט>: <שם תמונה> ' פקודה:

דוקר ריצת --שֵׁם ללכת-המשך -עמ' 8080 : 8080 golang-img

הנה ה ' -עמ' הדגל משמש לפרסום היציאה לביצוע המכולה במארח ה-docker:

שלב 5: אימות

לאימות, הצג את המכולות הפועלות באמצעות ' דוקר נ.ב ”:

דוקר נ.ב

בתוצאה שלהלן, האפליקציה המכולה מאזינה בממשקי רשת זמינים ' 0.0.0.0 'ביציאה שפורסמה' 8080 '. זה מרמז שהיציאה מועברת לאפליקציה הפועלת במחשב המארח:

כעת, הפעל את הדפדפן ונווט אל ' http://localhost:8080/ ' ולוודא אם טכניקת העברת הנמלים מיושמת או לא ואם היישום המכיל נגיש מחוץ לקונטיינר במערכת המארחת:

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

כיצד להעביר יציאה ב-Docker באמצעות Docker Compose

כדי להעביר את יציאת המכולה למארח כדי לגשת אל האפליקציה המכולה מחוץ לקונטיינר, המשתמש יכול להשתמש ב-' נמל ' מקש את קובץ ה-compos yaml. Docker compose הוא שירות Docker המאפשר לנו להפעיל שירותים ויישומים שונים בקונטיינרים שונים. משתמש ב ' docker-compose.yml ” קובץ, המשתמש יכול גם להעביר את יציאת המכולה למכונה המארח ולהיות בעל חיבור אפליקציה לעולם החיצון.

בדוק את ההליך שלהלן לאיורים.

שלב 1: צור קובץ כתיבה

ראשית, צור קובץ בשם ' docker-compose.yml ' הקובץ והוסיפו את התוכן הבא לקובץ:

גִרְסָה: '3'

שירותים:

אינטרנט:

לבנות: .

יציאות:

- 8080 : 8080

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

שלב 2: הפעל את האפליקציה

לאחר ציון ההוראות בקובץ החיבור, הפעל את היישום במיכל באמצעות ' docker-compose up ' פקודה:

docker-compose up

שלב 3: אימות

לאימות, רשום את מיכלי החיבור באמצעות ' docker-compose ps ' פקודה:

docker-compose נ.ב

כדי לבדוק אם המיכל נגיש במחשב המארח, נווט אל ' http://localhost:8080/ 'כתובת אתר. כאן, אתה יכול לראות שהעברנו ביעילות את יציאת המכולה על המארח:

כיצד להעביר יציאה לרשת ספציפית

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

שלב 1: צור רשת

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

רשת docker צור mygo-network

כדי להציג את רשתות Docker, השתמש ב-' docker network ls ' פקודה:

רשת docker ls

כאן, יצרנו בהצלחה ' רשת mygo 'שמשתמש ב' לְגַשֵׁר ' נהג:

שלב 2: מפה רשת

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

דוקר ריצת -עמ' 8080 : 8080 --רֶשֶׁת mygo-network golang-img

בפקודה הנתונה, ' -עמ' ' אפשרות מפרסמת את הקונטיינר ביציאה שצוינה של הרשת שצוינה. הנה ה ' -רֶשֶׁת אפשרות ” משמשת להגדרת רשת הדוקר:

לאימות, נווט שוב ​​אל ' http://localhost:8080 ' לנמל ולבדוק אם המיכל נגיש ברשת שצוינה או לא:

הפלט לעיל מצביע על כך שהעברנו למעשה את יציאת המכולה ברשת ספציפית.

הערה: בזמן השימוש ברשת 'מארח', המשתמש אינו צריך לפרסם את היציאה ממכולה למארח באמצעות ' -עמ' ' או ' -לְפַרְסֵם ' אפשרות.

העבר יציאה לרשת ספציפית באמצעות Docker Compose

הוסף את הקטע הבא ב' docker-compose.yml 'קובץ. בקטע שלמטה, ' רשתות 'מפתח משמש לציון הרשת:

גִרְסָה: '3'
שירותים:

אינטרנט:
לבנות: .
יציאות:
- 8080 : 8080

כעת, הפעל את האפליקציה במיכל באמצעות ' docker-compose up ' פקודה:

docker-compose up

כיסינו את השיטות להעברת יציאות ב-Docker.

סיכום

כדי להעביר את היציאה ב-Docker לגישה לאפליקציית dockerize מחוץ לקונטיינר, המשתמש יכול להשתמש ב-' -עמ' ' או ' -לְפַרְסֵם אפשרות ב' דוקר ריצת הפקודה או שהמשתמש יכול להשתמש ב- נמלים ' מקש בקובץ החיבור של Docker. על מנת לגשת לקונטיינר ברשת ספציפית, המשתמש יכול להעביר את יציאת הקונטיינר ברשת באמצעות ' –רשת <רשת> ' אפשרות. בלוג זה הדגים את הטכניקות להעברת יציאות ב-Docker.