ภาพรวม Docker Networking
Docker Networking คืออะไร?
หัวข้อที่มีชื่อว่า “Docker Networking คืออะไร?”ทุก container จะได้รับ virtual network interface (NIC) เมื่อเริ่มต้นทำงาน Docker จะเชื่อมต่อ NIC นั้นเข้ากับ network — ชั้น software-defined ที่ควบคุมว่า container ใดสามารถสื่อสารกันได้และสื่อสารกับโลกภายนอกได้อย่างไร
หากไม่มี Docker networking container จะเป็นเกาะที่แยกตัวโดยสมบูรณ์ เมื่อมี networking คุณสามารถเชื่อมต่อ microservice เข้าด้วยกัน เปิด port ให้ host เข้าถึง และแบ่งแยก traffic ตาม environment ได้ โดยไม่ต้องแตะ network configuration จริงของ host เลย
Network Drivers
หัวข้อที่มีชื่อว่า “Network Drivers”Docker มี network driver ในตัว 4 ประเภท แต่ละประเภทมีการแลกเปลี่ยนระหว่าง isolation, ประสิทธิภาพ และความง่ายในการใช้งานต่างกัน
| Driver | ขอบเขต | คำอธิบาย |
|---|---|---|
bridge | Single host | Driver เริ่มต้น สร้าง virtual switch (docker0) บน host Container บน bridge เดียวกันสื่อสารกันได้ container บน bridge ต่างกันสื่อสารไม่ได้ |
host | Single host | ลบ network isolation — container ใช้ network stack ของ host โดยตรง ประสิทธิภาพสูงสุด ไม่ต้อง map port แต่ไม่มี isolation |
none | Single host | ปิดใช้งาน networking ทั้งหมด container ได้รับเฉพาะ loopback interface เหมาะสำหรับ batch job ที่ไม่ต้องการ network |
overlay | Multi-host | ขยายข้าม Docker daemon หลายตัว (Docker Swarm) ใช้สำหรับ distributed service ที่ต้องสื่อสารข้าม physical machine |
network เริ่มต้น
หัวข้อที่มีชื่อว่า “network เริ่มต้น”Docker สร้าง network สาม network โดยอัตโนมัติเมื่อ daemon เริ่มต้น คุณสามารถดูได้ด้วย docker network ls:
docker network lsผลลัพธ์ที่คาดหวัง:
NETWORK ID NAME DRIVER SCOPEabc123def456 bridge bridge localdef456abc789 host host localghi789jkl012 none null localnetwork bridge (รองรับโดย virtual switch docker0) คือที่ที่ทุก container จะถูกวางเมื่อคุณละเว้น --network ส่วน network host และ none เป็นแบบพิเศษ
การตรวจสอบ Default Bridge
หัวข้อที่มีชื่อว่า “การตรวจสอบ Default Bridge”docker network inspect แสดงการกำหนดค่าโดยละเอียด — subnet, gateway และ container ที่เชื่อมต่ออยู่ในขณะนั้น:
docker network inspect bridgeโมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | หัวข้อ |
|---|---|
| network Bridge เริ่มต้น | วิธีการทำงานของ docker0, IP ของ container และข้อจำกัดด้าน DNS |
| DNS ของ Container และ User-Defined Networks | วิธีที่ user-defined bridge ให้ name resolution อัตโนมัติ |
| การ Publish และ Expose port | -p vs EXPOSE, syntax การผูก port, ephemeral ports |
| Custom Networks และการแยก Container | การสร้าง เชื่อมต่อ ตรวจสอบ และลบ network |
ลงมือปฏิบัติ: ตรวจสอบค่าเริ่มต้น
หัวข้อที่มีชื่อว่า “ลงมือปฏิบัติ: ตรวจสอบค่าเริ่มต้น”# List all networks
docker network ls
# Inspect the default bridge in detail
docker network inspect bridge