‫ข้อกำหนดสำหรับการบรรยายนี้คือคุณเคยเห็นการบรรยายเกี่ยวกับเครือข่ายก่อนหน้านี้และเข้าใจแนวคิดหลักสำหรับเครือข่าย
‫Docker และคำสั่งที่เข้ากันได้
‫ไม่เป็นไร.
‫และการบรรยายนี้ คุณจะได้เรียนรู้และเล่นกับ DNS และผลกระทบที่มีต่อคอนเทนเนอร์ในเครือข่ายแบบกำหนดเองและเครือข่ายเริ่มต้น
‫เราจะมาทบทวนกันอย่างรวดเร็วว่าการมี
‫DNS ที่ดีนั้นสำคัญแค่ไหน เพราะคุณไม่สามารถพึ่งพาที่อยู่ IP ภายในคอนเทนเนอร์ได้ เนื่องจากสิ่งต่าง
‫ๆ มีไดนามิกมาก เราจะพิจารณาความแตกต่างระหว่างเครือข่ายเริ่มต้นและเครือข่ายแบบกำหนดเองโดยพิจารณาจากวิธีที่พวกเขาจัดการกับ
‫DNS
‫จากนั้นเราจะตรวจสอบ --link ตัวเลือกสำหรับการรันคอนเทนเนอร์เพื่อเปิดใช้งาน DNS บนเครือข่ายบริดจ์เริ่มต้น
‫ดังนั้นจึงมีอีกสิ่งหนึ่งที่สำคัญสำหรับคอนเทนเนอร์และเครือข่ายเสมือนทั้งหมดเหล่านี้
‫และพวกมันก็พูดคุยกันเอง และนั่นคือการตั้งชื่อ เพราะในโลกของคอนเทนเนอร์ที่เปิดขึ้นและหายไปตลอดเวลา มีการเคลื่อนย้าย
‫ขยายและย่อขนาด และความมหัศจรรย์ของบริการขนาดเล็กเหล่านี้ที่เราเห็นอยู่ทุกหนทุกแห่ง ก็คือ เราไม่สามารถพึ่งพาที่อยู่
‫IP เป็นวิธีพูดได้ง่ายๆ อีกต่อไป จากสิ่งหนึ่งไปอีกสิ่งหนึ่ง
‫เนื่องจากเราไม่สามารถสรุปได้ว่าที่อยู่
‫IP จะเหมือนกันทุกนาทีด้วยซ้ำ
‫คอนเทนเนอร์อาจหายไปหรืออาจล้มเหลว จากนั้น Docker จะนำไปที่อื่น
‫มันเป็นไดนามิกเกินไปและซับซ้อนเกินไปที่จะจัดการกับมัน
‫ปรากฎว่ามีวิธีแก้ปัญหาในตัวสำหรับสิ่งนี้ และนั่นคือการตั้งชื่อ DNS Docker ใช้ชื่อคอนเทนเนอร์เทียบเท่ากับชื่อโฮสต์สำหรับคอนเทนเนอร์ที่คุยกัน
‫ถ้าคุณจำได้ว่าเรามีตู้คอนเทนเนอร์สองตู้ทำงานอยู่...
‫หากคุณจำได้ว่า Nginx อยู่ในเครือข่ายใหม่ที่เรียกว่า my_app_net
‫ถูกต้อง.
‫และมีภาชนะหนึ่งอันบนนั้น เนื่องจากฉันสร้างเครือข่ายใหม่นี้
‫ซึ่งไม่ใช่เครือข่ายบริดจ์เริ่มต้น
‫จริง ๆ แล้วได้รับคุณลักษณะใหม่พิเศษ ซึ่งเป็นความละเอียด DNS อัตโนมัติสำหรับคอนเทนเนอร์ทั้งหมดบนเครือข่ายเสมือนนั้นจากคอนเทนเนอร์อื่น
‫ๆ ทั้งหมดบนเครือข่ายเสมือนนั้นโดยใช้ชื่อคอนเทนเนอร์
‫ถ้าฉันสร้างคอนเทนเนอร์ที่สองบนเครือข่ายเสมือนนั้น พวกเขาจะสามารถค้นหากันได้
‫ไม่ว่าที่อยู่ IP จะเป็นชื่ออะไรก็ตาม
‫ลองทำสิ่งนี้: ชื่อรันคอนเทนเนอร์ของนักเทียบท่า ... และเราจะเรียกมันว่า nginx ของฉัน... และเราจะระบุเครือข่ายเป็นแอพของฉัน
‫net จากอิมเมจ nginx
‫ทีนี้ ถ้าเราดูที่เครือข่ายนั้น เราควรเห็น 2 ตู้คอนเทนเนอร์ และถ้าฉันทำ docker
‫container exec จากคอนเทนเนอร์ใหม่ที่ฉันเพิ่งสร้างขึ้น -- อ๊ะ เราต้องการไอทีในนั้นด้วย
‫-- และเราทำ ping ไปยัง nginx ใหม่ คุณสังเกตเห็นว่าการแก้ไข
‫DNS นั้นใช้ได้ สิ่งนี้ทำให้ง่ายมากสำหรับคุณที่จะมีคอนเทนเนอร์เดียว
‫และคุณต้องตั้งค่าไฟล์การกำหนดค่าในนั้นเพื่อพูดคุยด้วย บางทีสมมติว่าเซิร์ฟเวอร์
‫PHP จะคุยกับแบ็กเอนด์ของ MySQL จากนั้นกด Ctrl-c แล้วคุณจะเห็นว่ามันทำงานอย่างอื่นด้วย
‫ถ้าฉันข้ามไปที่คอนเทนเนอร์ nginx ใหม่ และฉันพยายาม ping ngnix ของฉัน คุณจะเห็นว่าความละเอียดใช้งานได้ทั้งสองวิธี
‫และนี่คือสิ่งที่แก้ปัญหาใหญ่หลวงเมื่อคุณกำลังหมุนตู้คอนเทนเนอร์ เพราะคุณไม่สามารถคาดเดาได้ว่าจะใช้ได้นานแค่ไหน
‫และอีกไม่กี่นาทีต่อจากนี้ ในการออกแบบการผลิตที่คุณมีคลัสเตอร์ เซิร์ฟเวอร์
‫Docker Swarm
‫ดังนั้นอาจไม่เปลี่ยนแปลงมากนักในเครื่องท้องถิ่นของคุณ แต่ถ้าคุณหยุดคอนเทนเนอร์ 3 หรือ 4 คอนเทนเนอร์ จากนั้นคุณเริ่มคอนเทนเนอร์เดียวกัน
‫และคุณเริ่มคอนเทนเนอร์เหล่านั้นในลำดับที่แตกต่างกัน คอนเทนเนอร์เหล่านั้นอาจไม่มีที่อยู่
‫IP เดียวกัน แต่ชื่อโฮสต์หรือชื่อคอนเทนเนอร์จะเหมือนกันเสมอ
‫และเพื่อให้คุณวางใจได้
‫ตอนนี้ฉันควรสังเกตว่า ถ้าเราทำรายการเครือข่ายนักเทียบท่า เครือข่ายบริดจ์เริ่มต้นมีข้อเสียอย่างหนึ่งที่นี่
‫ไม่มีเซิร์ฟเวอร์ DNS ที่สร้างขึ้นโดยค่าเริ่มต้น
‫ดังนั้นคุณสามารถใช้ --link
‫ดังนั้นเมื่อคุณสร้างคอนเทนเนอร์ คุณจะสังเกตเห็นว่ามีตัวเลือกลิงก์ และคุณสามารถระบุลิงก์ด้วยตนเองระหว่างคอนเทนเนอร์ในเครือข่ายบริดจ์เริ่มต้นนั้นได้
‫แต่จริงๆ แล้ว การสร้างเครือข่ายใหม่สำหรับแอปของคุณนั้นง่ายกว่ามาก เพื่อให้คุณไม่ต้องทำเช่นนี้ทุกครั้ง
‫และในส่วนต่อจากนี้ เมื่อเราพูดถึง Docker Compose คุณจะเห็นว่ามันง่ายขึ้นมากเพียงใด
‫เพราะ Compose จะสร้างเครือข่ายเสมือนใหม่โดยอัตโนมัติทุกครั้งที่คุณเปิดแอปขึ้นมา
‫ดังนั้นการสื่อสารระหว่างคอนเทนเนอร์ของคุณจึงง่ายยิ่งขึ้น
‫โดยสรุปแล้ว เราได้กล่าวถึงการบรรยายนี้ว่าคอนเทนเนอร์ไม่สามารถหรือไม่ควรพึ่งพาที่อยู่
‫IP ในการพูดคุยกันเองจริง ๆ เพราะไม่สามารถพึ่งพาได้
‫และ DNS นั้นเป็นมาตรฐานสำหรับวิธีที่เราทำการสื่อสารระหว่างคอนเทนเนอร์บนโฮสต์เดียวกันและข้ามโฮสต์
‫ดังนั้นฉันจึงแนะนำให้คุณสร้างเครือข่ายแบบกำหนดเองเสมอ เพราะมันง่ายกว่าการทำ
‫--link ตลอดเวลา
‫แล้วฉันก็ให้ทีเซอร์เกี่ยวกับ Docker Compose แก่คุณ และวิธีที่มันจะทำให้ทั้งหมดนี้ง่ายขึ้น โดยเฉพาะอย่างยิ่งระบบเครือข่าย