หน้าแรก Cloud ความรู้เกี่ยวกับการตั้งค่าเครือข่ายสำหรับ Docker อย่างง่ายๆ

[คู่มือ] ความรู้เกี่ยวกับการตั้งค่าเครือข่ายสำหรับ Docker อย่างง่ายๆ

แบ่งปัน


ระบบ Container ซึ่งเป็นเทคโนโลยีใหม่บนโลกเวอร์ช่วลนั้น กำลังถูกนำมาใช้มากขึ้นอย่างรวดเร็ว จนเหล่าวิศวกรเครือข่ายไม่ควรนิ่งนอนใจ ทนอยู่เฉยๆ ในคอมฟอร์ตโซนจนไล่ตามความรู้ใหม่ไม่ทัน ทาง NetworkComputing.com จึงได้สรุปความรู้ความเข้าใจเกี่ยวกับการจัดการเครือข่ายสำหรับแพลตฟอร์มคอนเทนเนอร์ชื่อดัง Docker อย่างง่ายไว้ดังต่อไปนี้

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

แต่จุดอ่อนของเครือข่าย bridge ที่มีมาให้โดยดีฟอลต์นี้คือ การไม่รองรับการค้นหาคอนเทนเนอร์ด้วย DNS แบบอัตโนมัติ ดังนั้น ถ้าคุณต้องการให้คอนเทนเนอร์ที่อยู่บนเครือข่ายดีฟอลต์นี้สามารถคุยกับคอนเทนเนอร์อื่นได้ คุณต้องใช้ออพชั่น –link เพื่อบังคับให้มีการสื่อสารเป็นรายๆ ไป นอกจากนี้ ยังต้องฟอร์เวิร์ดพอร์ตระหว่างแต่ละคอนเทนเนอร์อีกด้วย

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

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

สำหรับเครือข่ายที่สร้างขึ้นใหม่นี้ สามารถแบ่งประเภทตามวัตถุประสงค์การสื่อสารที่ต่างกันได้แก่

เครือข่าย Bridge – เหมือนเครือข่าย Bridge ที่มีโดยดีฟอลต์ ตรงที่มีไอพีซับเน็ตและเกตเวย์เป็นของตนเอง แต่ต่างจากตัวดีฟอลต์ตรงที่คอนเทนเนอร์ภายในเครือข่ายใหม่นี้สามารถสื่อสารระหว่างกันได้โดยไม่ต้องฟอร์เวิร์ดพอร์ต อีกทั้งยังรองรับการค้นพบคอนเทนเนอร์อื่นโดยอัตโนมัติผ่าน DNS ด้วย ถ้าคุณต้องการให้อุปกรณ์ในเครือข่ายอื่นสื่อสารกับทรัพยากรที่มีในเครือข่าย Bridge ของคุณ ก็เพียงแค่ตั้งค่าพอร์ต TCP/UDP ที่ต้องการ แล้ว Docker ก็จะแปลมาเป็นที่อยู่บนเครือข่ายและเลขพอร์ตสำหรับใช้สื่อสารกับเครือข่ายภายนอกให้เอง

เครือข่าย Overlay – ถ้าคุณวางแผนที่จะรัน Docker บนเครือข่ายแบบ Distributed และต้องการให้คอนเทนเนอร์บนโฮสที่ต่างกัน สามารถสื่อสารระหว่างกันได้โดยตรง ก็สามารถใช้ประโยชน์จากเครือข่ายแบบ Overlay นี้ได้ ซึ่งการสร้างเครือข่ายนี้ ต้องเปิดโหมด Swarm บนเซิร์ฟเวอร์ Docker และให้เข้าร่วมใน Swarm เดียวกัน ซึ่งโหมดนี้เปิดให้สามารถจัดการกลุ่มเอนจิ้นของ Docker หรือ “Swarm” ได้ และทำให้คุณสร้างเครือข่าย Overlay บนเลเยอร์ 2 ภายใน Swarm นั้นๆ ได้ โดยใช้ระบบการเข้ารหัสข้อมูลแบบ VXLAN

เครือข่าย Macvlan – เป็นเครือข่ายสร้างใหม่สำหรับทำให้การสื่อสารระหว่างคอนเทนเนอร์เรียบง่ายที่สุด ด้วยการลดการใช้บริดจ์ที่อยู่ระหว่างคอนเทนเนอร์กับเครื่องโฮสต์ โดยเฉพาะเวลาใช้เครือข่ายแบบ Bridge และ Overlay พร้อมกัน ทำให้สามารถเปิดทรัพยากรสู่ภายนอกได้โดยอัตโนมัติ โดยไม่ต้องคอยฟอร์เวิร์ดพอร์ต เครือข่าย Macvlan นี้เป็นการใช้ที่อยู่ MAC ในเลเยอร์ 2 เพื่อจับคู่กับที่อยู่ไอพีบนเลเยอร์ 3

ซึ่งเครือข่าย Macvlan นี้สามารถสร้างขึ้นได้สามแบบที่แตกต่างกัน แบบแรกคือโหมด bridge ที่แต่ละคอนเทนเนอร์มีที่อยู่ MAC เป็นของตนเอง จากนั้น Docker จะจับคู่ที่อยู่ MAC กับเลขพอร์ต ทำให้การสื่อสารระหว่างคอนเทนเนอร์ภายในเครือข่าย Macvlan จึงเปลี่ยนมาใช้เลเยอร์ 2 แทน ขณะที่การสื่อสารนอกเครือข่ายยังใช้การเราท์ติ้งบนเลเยอร์ 3 อยู่

แบบที่สองคือการใช้โหมด 802.1q Trunk Bridge เพื่อติดป้ายชื่อในแต่ละ VLAN เพื่อแยกกลุ่มคอนเทนเนอร์ ซึ่งเครื่องโฮสต์จะตั้งค่าให้เป็น Trunk เพื่อเชื่อมต่อไปยังเราเตอร์และสวิตช์ภายนอก

ส่วนแบบสุดท้าย ถ้าคุณต้องรันคอนเทนเนอร์ภายในเครือข่ายที่ใช้ที่อยู่ไอพีทั้งแบบ IPv4 และ IPv6 แล้ว ก็สามารถใช้โหมด Dual-Stack Bridge ได้ด้วยเช่นกัน

ที่มา : http://www.networkcomputing.com/cloud-infrastructure/docker-networking-basics-quick-guide/725795721