วิธีส่งต่อพอร์ตใน Docker

Withi Sng Tx Phxrt Ni Docker



นักเทียบท่าเป็นแพลตฟอร์มนักเทียบท่ายอดนิยมที่เชื่อมต่อแอปพลิเคชันและซอฟต์แวร์ในสภาพแวดล้อมแบบแยกส่วนที่เรียกว่าคอนเทนเนอร์ ในขณะที่ดำเนินการแอปพลิเคชันในคอนเทนเนอร์ ผู้ใช้มักจะต้องเข้าถึงแอปพลิเคชันที่บรรจุคอนเทนเนอร์ภายนอกคอนเทนเนอร์ เพื่อจุดประสงค์นี้ ผู้ใช้จำเป็นต้องใช้เทคนิคการส่งต่อพอร์ต

การส่งต่อพอร์ตใน Docker เป็นกระบวนการที่ช่วยให้เราสามารถเปิดเผยพอร์ตคอนเทนเนอร์บนระบบโฮสต์ Docker อนุญาตให้เราเรียกใช้แอปพลิเคชันในสภาพแวดล้อมที่แยกจากกัน และยังทำให้สามารถเข้าถึงได้จากภายนอกคอนเทนเนอร์บนเครื่องของผู้ใช้

โพสต์นี้จะสาธิต:







วิธีส่งต่อพอร์ตใน Docker โดยใช้แท็ก '-p' หรือ '–publish'

หากต้องการส่งต่อพอร์ตใน Docker ผู้ใช้จำเป็นต้องเผยแพร่พอร์ตคอนเทนเนอร์บนโฮสต์ Docker เพื่อจุดประสงค์นี้ ให้รันคอนเทนเนอร์บนโฮสต์นักเทียบท่าโดยใช้เครื่องหมาย “ -พี ' หรือ ' –เผยแพร่ ” แท็กใน “ นักเทียบท่าวิ่ง ' สั่งการ.



เพื่อการสาธิตที่ถูกต้อง ให้ปฏิบัติตามคำแนะนำด้านล่าง



ขั้นตอนที่ 1: สร้าง Dockerfile

ขั้นแรก สร้างไฟล์และตั้งชื่อเป็น “ Dockerfile - ไฟล์นี้มีคำแนะนำที่เป็นข้อความเพื่อสร้างเทมเพลตของคอนเทนเนอร์ Docker ตัวอย่างเช่น เรามาเทียบท่ากับโปรแกรม Golang ธรรมดาโดยใช้ตัวอย่างด้านล่างใน Dockerfile:





จากโกลัง: 1.8

WORKDIR - ไป - src - แอป

คัดลอก main2.go

RUN ไปสร้าง -โอ เว็บเซิร์ฟเวอร์ .

เปิดเผย 8080

ซีเอ็มดี - './เว็บเซิร์ฟเวอร์' -

ในตัวอย่างข้อมูลที่กำหนด:

  • - จาก ” ใช้เพื่อตั้งค่าอิมเมจพื้นฐาน
  • - WORKDIR ” กำหนดไดเร็กทอรีการทำงานของคอนเทนเนอร์
  • - สำเนา ” คำสั่งจะสร้างสำเนาของไฟล์โปรแกรมในเส้นทางที่ระบุคอนเทนเนอร์
  • - วิ่ง ” คำสั่งจะดำเนินการตามคำสั่งที่ระบุในคอนเทนเนอร์
  • - เปิดเผย ” คำสั่งระบุพอร์ตที่จะรับฟังคอนเทนเนอร์
  • - ซีเอ็มดี ” ระบุจุดปฏิบัติการของคอนเทนเนอร์

ขั้นตอนที่ 2: สร้างโปรแกรม Golang

จากนั้นสร้างไฟล์อื่นชื่อ “ main2.go ” และวางโปรแกรม Golang ที่ให้มาด้านล่างซึ่งพิมพ์สตริงอย่างง่ายบนพอร์ต “ 8080 -



แพ็คเกจหลัก

นำเข้า -

'เอฟเอ็มที'

'บันทึก'

'เน็ต/http'

-

ตัวจัดการฟังก์ชัน - ใน http.ResponseWriter, r - http.คำขอ - -

html := -

- DOCTYPE html -

- html -

- ศีรษะ -

- ชื่อ - สวัสดีโกลัง - ชื่อ -

- สไตล์ -

ร่างกาย -

สีพื้นหลัง: #D2B48C;

-

.คอนเทนเนอร์ -

การจัดแนวข้อความ: กึ่งกลาง;

ช่องว่างภายใน: 50px;

-

- สไตล์ -

- ศีรษะ -

- ร่างกาย -

- กอง ระดับ - 'คอนเทนเนอร์' -

- h1 - สวัสดี - ยินดีต้อนรับสู่บทช่วยสอน LinuxHint - h1 -

- กอง -

- ร่างกาย -

- html -

w.ส่วนหัว - - .ชุด - 'ชนิดของเนื้อหา' - 'ข้อความ/html' -

fmt.Fprint - ใน , html -

-

ฟังก์ชั่นหลัก - - -

http.HandleFunc - - , ผู้จัดการ -

เข้าสู่ระบบร้ายแรง - http.ListenAndServe - '0.0.0.0:8080' , ไม่มี - -

-

ขั้นตอนที่ 3: สร้างสแนปชอตของคอนเทนเนอร์

ตอนนี้ สร้างสแน็ปช็อตสำหรับคอนเทนเนอร์จาก Dockerfile ที่ระบุด้านบน เพื่อจุดประสงค์นี้ ขั้นแรก ให้นำทางไปยังไดเร็กทอรีที่สร้าง Dockerfile โดยใช้เครื่องหมาย “ ซีดี <เส้นทางสู่การทำงาน-dir> ' สั่งการ:

จากนั้น สร้างคอนเทนเนอร์อิมเมจใหม่โดยใช้คำสั่งที่กำหนด:

สร้างนักเทียบท่า -t golang-img

ผลลัพธ์ที่ได้แสดงให้เห็นว่ารูปภาพถูกสร้างขึ้นตามบริบทของบิลด์ที่ให้ไว้

ขั้นตอนที่ 4: ส่งต่อพอร์ตโฮสต์ไปยังพอร์ตคอนเทนเนอร์

ตอนนี้ รันคอนเทนเนอร์และส่งต่อพอร์ตโฮสต์ไปยังพอร์ตคอนเทนเนอร์เพื่อเข้าถึงแอปเทียบท่าภายนอกคอนเทนเนอร์บนเครื่องท้องถิ่น เพื่อจุดประสงค์นี้ ให้รันไฟล์ “นักเทียบท่าวิ่ง –ชื่อ -p : ' สั่งการ:

นักเทียบท่าวิ่ง --ชื่อ ไปต่อ -พี 8080 - 8080 โกลัง-img

ที่นี่ “ -พี ” ใช้เพื่อเผยแพร่คอนเทนเนอร์ที่รันพอร์ตบนโฮสต์นักเทียบท่า:

ขั้นตอนที่ 5: การยืนยัน

สำหรับการตรวจสอบ ให้ดูคอนเทนเนอร์ที่ทำงานอยู่โดยใช้ “ นักเทียบท่าปล -

นักเทียบท่า ปล

ในผลลัพธ์ด้านล่าง แอปพลิเคชันที่มีคอนเทนเนอร์กำลังฟังบนอินเทอร์เฟซเครือข่ายที่มีอยู่ “ 0.0.0.0 ” บนพอร์ตที่เผยแพร่ “ 8080 - หมายความว่าพอร์ตถูกส่งต่อไปยังแอปพลิเคชันที่ทำงานอยู่บนเครื่องโฮสต์:

ตอนนี้เปิดเบราว์เซอร์แล้วไปที่ “ http://localhost:8080/ ” และตรวจสอบว่ามีการใช้เทคนิคการส่งต่อพอร์ตหรือไม่ และแอปพลิเคชันแบบคอนเทนเนอร์นั้นสามารถเข้าถึงได้ภายนอกคอนเทนเนอร์บนระบบโฮสต์หรือไม่:

ที่นี่เราได้ส่งต่อพอร์ตโฮสต์ไปยังพอร์ตคอนเทนเนอร์สำเร็จแล้ว และแอปพลิเคชันสามารถเข้าถึงได้บนโฮสต์นักเทียบท่า

วิธีส่งต่อพอร์ตใน Docker โดยใช้ Docker Compose

หากต้องการส่งต่อพอร์ตคอนเทนเนอร์ไปยังโฮสต์เพื่อเข้าถึงแอปพลิเคชันคอนเทนเนอร์จากภายนอกคอนเทนเนอร์ ผู้ใช้สามารถใช้ ' ท่าเรือ ” ป้อนไฟล์ yaml เขียน Docker compose เป็นบริการ Docker ที่ช่วยให้เราสามารถเรียกใช้บริการและแอปพลิเคชันต่างๆ ในคอนเทนเนอร์ที่แตกต่างกันได้ ใช้ ' นักเทียบท่า-compose.yml ” ผู้ใช้ยังสามารถส่งต่อพอร์ตคอนเทนเนอร์ไปยังเครื่องโฮสต์และมีการเชื่อมต่อแอปพลิเคชันไปยังโลกภายนอกได้

ตรวจสอบขั้นตอนด้านล่างเพื่อดูภาพประกอบ

ขั้นตอนที่ 1: สร้างไฟล์เขียน

ขั้นแรกให้สร้างไฟล์ชื่อ “ นักเทียบท่า-compose.yml ” และเพิ่มเนื้อหาต่อไปนี้ลงในไฟล์:

รุ่น: '3'

บริการ:

เว็บ:

สร้าง: .

พอร์ต:

- 8080 - 8080

ในตัวอย่างข้างต้น ' พอร์ต ” ใช้เพื่อเชื่อมต่อโฮสต์เข้ากับพอร์ตคอนเทนเนอร์ ในที่นี้ ค่าแรกคือพอร์ตโฮสต์ และค่าที่สองคือพอร์ตคอนเทนเนอร์

ขั้นตอนที่ 2: เปิดแอป

หลังจากระบุคำแนะนำในไฟล์เขียนแล้ว ให้เปิดแอปพลิเคชันในคอนเทนเนอร์โดยใช้เครื่องหมาย “ นักเทียบท่า-เขียนขึ้น ' สั่งการ:

นักเทียบท่า-เขียนขึ้น

ขั้นตอนที่ 3: การยืนยัน

สำหรับการตรวจสอบ ให้ลงรายการคอนเทนเนอร์การเขียนโดยใช้เครื่องหมาย “ นักเทียบท่าเขียนป.ล ' สั่งการ:

นักเทียบท่าเขียน ปล -ก

หากต้องการตรวจสอบว่าสามารถเข้าถึงคอนเทนเนอร์บนเครื่องโฮสต์ได้หรือไม่ ให้ไปที่ “ http://localhost:8080/ ” URL ที่นี่ คุณจะเห็นว่าเราได้ส่งต่อพอร์ตคอนเทนเนอร์บนโฮสต์อย่างมีประสิทธิภาพ:

วิธีส่งต่อพอร์ตไปยังเครือข่ายเฉพาะ

หากต้องการส่งต่อพอร์ตคอนเทนเนอร์ไปยังเครือข่ายเฉพาะ ผู้ใช้จำเป็นต้องระบุเครือข่ายที่ต้องการเข้าถึงคอนเทนเนอร์โดยใช้เครื่องหมาย “ –เครือข่าย ' ตัวเลือก. ดูขั้นตอนที่กำหนดสำหรับการสาธิต

ขั้นตอนที่ 1: สร้างเครือข่าย

สร้างเครือข่ายใหม่โดยใช้ “ เครือข่ายนักเทียบท่าสร้าง ' สั่งการ. ตามค่าเริ่มต้น เครือข่ายนี้จะใช้ไดรเวอร์บริดจ์:

เครือข่ายนักเทียบท่าสร้างเครือข่าย mygo

หากต้องการดูเครือข่าย Docker ให้ใช้ ' เครือข่ายนักเทียบท่า ls ' สั่งการ:

เครือข่ายนักเทียบท่า LS

ที่นี่เราสร้างได้สำเร็จ” mygo-เครือข่าย ” ที่ใช้ “ สะพาน ” ไดรเวอร์:

ขั้นตอนที่ 2: แผนที่เครือข่าย

หากต้องการเรียกใช้และเข้าถึงคอนเทนเนอร์บนเครือข่ายเฉพาะโดยใช้เทคนิคการส่งต่อพอร์ต ให้ใช้คำสั่งด้านล่าง:

นักเทียบท่าวิ่ง -พี 8080 - 8080 --เครือข่าย mygo-เครือข่าย golang-img.img

ในคำสั่งที่กำหนด “ -พี ตัวเลือก” เผยแพร่คอนเทนเนอร์บนพอร์ตที่ระบุของเครือข่ายที่ระบุ ที่นี่ “ –เครือข่าย ตัวเลือก ” ใช้เพื่อกำหนดเครือข่ายนักเทียบท่า:

สำหรับการตรวจสอบ ให้ไปที่ “ http://localhost:8080 ” และตรวจสอบว่าคอนเทนเนอร์สามารถเข้าถึงได้บนเครือข่ายที่ระบุหรือไม่:

ผลลัพธ์ข้างต้นบ่งชี้ว่าเราได้ส่งต่อพอร์ตคอนเทนเนอร์บนเครือข่ายเฉพาะอย่างมีประสิทธิภาพ

บันทึก: ในขณะที่ใช้เครือข่าย 'โฮสต์' ผู้ใช้ไม่จำเป็นต้องเผยแพร่พอร์ตจากคอนเทนเนอร์หนึ่งไปยังอีกโฮสต์โดยใช้ ' -พี ' หรือ ' –เผยแพร่ ' ตัวเลือก.

ส่งต่อพอร์ตไปยังเครือข่ายเฉพาะโดยใช้ Docker Compose

เพิ่มตัวอย่างต่อไปนี้ใน “ นักเทียบท่า-compose.yml ' ไฟล์. ในตัวอย่างด้านล่างนี้ “ เครือข่าย ” ใช้เพื่อระบุเครือข่าย:

รุ่น: '3'
บริการ:

เว็บ:
สร้าง: .
พอร์ต:
- 8080 - 8080

ตอนนี้ให้เปิดแอปพลิเคชันในคอนเทนเนอร์โดยใช้เครื่องหมาย “ นักเทียบท่า-เขียนขึ้น ' สั่งการ:

นักเทียบท่า-เขียนขึ้น

เราได้กล่าวถึงวิธีการส่งต่อพอร์ตใน Docker แล้ว

บทสรุป

หากต้องการส่งต่อพอร์ตใน Docker เพื่อเข้าถึงแอปพลิเคชัน dockerize ภายนอกคอนเทนเนอร์ ผู้ใช้สามารถใช้คำสั่ง “ -พี ' หรือ ' –เผยแพร่ ” ตัวเลือกใน “ นักเทียบท่าวิ่ง ” หรือผู้ใช้สามารถใช้คำสั่ง “ พอร์ต ” คีย์ในไฟล์เขียน Docker ในการเข้าถึงคอนเทนเนอร์บนเครือข่ายเฉพาะ ผู้ใช้สามารถส่งต่อพอร์ตคอนเทนเนอร์บนเครือข่ายได้โดยใช้ปุ่ม “ –เครือข่าย <เครือข่าย> ' ตัวเลือก. บล็อกนี้ได้สาธิตเทคนิคในการส่งต่อพอร์ตใน Docker