การส่งต่อพอร์ตใน Docker เป็นกระบวนการที่ช่วยให้เราสามารถเปิดเผยพอร์ตคอนเทนเนอร์บนระบบโฮสต์ Docker อนุญาตให้เราเรียกใช้แอปพลิเคชันในสภาพแวดล้อมที่แยกจากกัน และยังทำให้สามารถเข้าถึงได้จากภายนอกคอนเทนเนอร์บนเครื่องของผู้ใช้
โพสต์นี้จะสาธิต:
- วิธีส่งต่อพอร์ตใน Docker โดยใช้แท็ก '-p' หรือ '–publish'
- วิธีส่งต่อพอร์ตใน Docker โดยใช้ Docker Compose
- วิธีส่งต่อพอร์ตไปยังเครือข่ายเฉพาะ
- บทสรุป
วิธีส่งต่อพอร์ตใน 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: ส่งต่อพอร์ตโฮสต์ไปยังพอร์ตคอนเทนเนอร์
ตอนนี้ รันคอนเทนเนอร์และส่งต่อพอร์ตโฮสต์ไปยังพอร์ตคอนเทนเนอร์เพื่อเข้าถึงแอปเทียบท่าภายนอกคอนเทนเนอร์บนเครื่องท้องถิ่น เพื่อจุดประสงค์นี้ ให้รันไฟล์ “นักเทียบท่าวิ่ง –ชื่อ
ที่นี่ “ -พี ” ใช้เพื่อเผยแพร่คอนเทนเนอร์ที่รันพอร์ตบนโฮสต์นักเทียบท่า:
ขั้นตอนที่ 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: สร้างเครือข่าย
สร้างเครือข่ายใหม่โดยใช้ “ เครือข่ายนักเทียบท่าสร้าง
หากต้องการดูเครือข่าย 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