Docker - การจัดการพอร์ต

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

ในตัวอย่างของเราเราจะดาวน์โหลด Jenkins container จาก Docker Hub จากนั้นเราจะแมปหมายเลขพอร์ต Jenkins กับหมายเลขพอร์ตบนโฮสต์ Docker

Step 1 - ขั้นแรกคุณต้องลงทะเบียนอย่างง่ายบน Docker Hub

Step 2 - เมื่อคุณสมัครแล้วคุณจะเข้าสู่ Docker Hub

Step 3 - ต่อไปมาดูและค้นหาภาพ Jenkins

Step 4 - หากคุณเลื่อนลงในหน้าเดียวกันคุณจะเห็น Docker pullคำสั่ง สิ่งนี้จะใช้เพื่อดาวน์โหลด Jenkins Image ไปยังเซิร์ฟเวอร์ Ubuntu ในเครื่อง

Step 5 - ไปที่เซิร์ฟเวอร์ Ubuntu แล้วเรียกใช้คำสั่ง -

sudo docker pull jenkins

Step 6 - หากต้องการทำความเข้าใจว่าพอร์ตใดบ้างที่คอนเทนเนอร์เปิดอยู่คุณควรใช้ Docker inspect command เพื่อตรวจสอบภาพ

ตอนนี้เรามาเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ inspect คำสั่ง

นักเทียบท่าตรวจสอบ

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

ไวยากรณ์

docker inspect Container/Image

ตัวเลือก

  • Container/Image - ภาชนะหรือรูปภาพที่ต้องการตรวจสอบ

ส่งคืนค่า

ข้อมูลระดับต่ำของรูปภาพหรือคอนเทนเนอร์ในรูปแบบ JSON

ตัวอย่าง

sudo docker inspect jenkins

เอาต์พุต

ผลลัพธ์ของไฟล์ inspectคำสั่งให้เอาต์พุต JSON ถ้าเราสังเกตเอาท์พุทจะเห็นว่ามีส่วนของ "ExposedPorts" และจะเห็นว่ามีสองพอร์ตที่กล่าวถึง หนึ่งคือdata port จาก 8080 และอีกอันคือ control port จาก 50000

หากต้องการเรียกใช้ Jenkins และแมปพอร์ตคุณต้องเปลี่ยน Docker runคำสั่งและเพิ่มตัวเลือก 'p' ซึ่งระบุการแมปพอร์ต ดังนั้นคุณต้องเรียกใช้คำสั่งต่อไปนี้ -

sudo docker run -p 8080:8080 -p 50000:50000 jenkins

ด้านซ้ายมือของการแมปหมายเลขพอร์ตคือพอร์ตโฮสต์ Docker ที่จะแมปและด้านขวามือคือหมายเลขพอร์ตคอนเทนเนอร์ Docker

เมื่อคุณเปิดเบราว์เซอร์และไปที่โฮสต์ Docker บนพอร์ต 8080 คุณจะเห็น Jenkins ทำงานอยู่