‫หนึ่งในคำสัญญาที่สำคัญของคอนเทนเนอร์คือเราสามารถปรับใช้แอพของเราได้อย่างง่ายดายเช่นเราเป็นบริการแพลตฟอร์มคุณรู้เหมือน Heroku หรืออะไรบางอย่าง
‫เราสามารถทำได้บนฮาร์ดแวร์ของทุกคนไม่ว่าจะเป็นบนฮาร์ดแวร์ของเรามันเป็นผู้ให้บริการคลาวด์ไม่ว่าจะเป็นเสมือนหรือทางกายภาพ ด้วย Docker แอปของเราสามารถทำงานได้เหมือนกันไม่ว่าจะเป็น Amazon,
‫Azure, DigitalOcean, Linode, Rackspace, Google Cloud หรืออะไรก็ตาม
‫หากไม่มีคุณสมบัติของแพลตฟอร์มเหล่านี้เราจะปรับใช้และบำรุงรักษาภาชนะบรรจุหลายสิบหรือหลายร้อยหรือหลายพันภาชนะบรรจุได้อย่างง่ายดายในเซิร์ฟเวอร์หรืออินสแตนซ์จำนวนมากอย่างไร
‫หรือโหนดหรือหยดน้ำหรืออะไรก็ตาม
‫สิ่งนี้นำมาซึ่งปัญหาใหม่ที่ไม่เคยเกิดขึ้นมาก่อนสำหรับองค์กรขนาดเล็ก
‫เราทุกคนรู้เกี่ยวกับ Netflix และองค์กรขนาดใหญ่เช่นนั้นถึงขนาดเป็นพัน ๆ
‫โหนดและหมื่นโหนดและพวกเขามีวิศวกรมากมาย
‫แต่ถ้าคุณมีคนเพียงไม่กี่คนในทีมของคุณหรือถ้าคุณเป็นเพียงผู้พัฒนาเดี่ยวคุณจะนำภาชนะบรรจุของคุณมาขยายขนาดและจัดการกับวงจรชีวิตของพวกเขาได้อย่างไร
‫ตั้งแต่การปรับใช้การเริ่มต้นจนถึงการเริ่มต้นใหม่เพื่อสร้างใหม่การลบและอัปเดตและทั้งหมด
‫เราเริ่มถามคำถามว่านักเทียบท่าทำเช่นนั้นได้อย่างไรหรือแม้แต่ทำอย่างนั้น?
‫บางคำถามที่เราถามตัวเองว่าเป็นสิ่งที่เราจะไต่ออกได้อย่างไร เราจะขยายขนาดได้อย่างไร
‫เราจะมั่นใจได้อย่างไรว่าคอนเทนเนอร์ของเราเริ่มต้นใหม่หากล้มเหลว
‫เราจะแทนที่คอนเทนเนอร์เหล่านั้นได้อย่างไรเมื่อเรามีการอัพเดทจริง
‫สิ่งใดที่เรียกว่าการปรับใช้สีเขียวสีน้ำเงินในปัจจุบันซึ่งหมายความว่าคุณไม่มีเวลาหยุดทำงานและนำเซิร์ฟเวอร์ออกจากกลุ่มเพื่อนำสิ่งใหม่เข้ามา
‫คุณจะพบกับสิ่งที่มีอยู่เสมอเพื่อที่คุณจะไม่ผิดหวังเมื่ออัปเดต เราจะรู้ได้อย่างไรว่าเรามีหลายสิบโหนดหรือแม้กระทั่งสามโหนดที่เราเริ่มคอนเทนเนอร์เหล่านั้น
‫โหนดใดเป็นคอนเทนเนอร์ของเรา
‫เราจะพูดคุยข้ามโหนดหรือเซิร์ฟเวอร์ต่าง ๆ เหล่านั้นด้วยเครือข่ายของเราภายในคอนเทนเนอร์ได้อย่างไร?
‫เมื่อพูดถึงเรื่องความปลอดภัยเราจะแน่ใจได้อย่างไรว่าตู้สินค้าของเราจะทำงานบนเครื่องที่เราตั้งใจจะให้ทำงานเท่านั้น
‫ตอนนี้เรากำลังเคลื่อนย้ายสิ่งต่างๆรอบตัวและปรับใช้งานได้ทันทีเราจะเก็บข้อมูลส่วนตัวที่เราต้องการสำหรับคอนเทนเนอร์ของเราเช่นความลับหรือรหัสผ่านได้อย่างไร
‫ดังนั้นสิ่งนี้ทำให้เรามีวิวัฒนาการที่สำคัญในขอบเขตของสิ่งที่นักเทียบท่าพยายามแก้ไข
‫เมื่อมีคนพูดคุยกับฉันและพวกเขาคิดว่า Docker เป็นเพียงคอนเทนเนอร์ไทม์นั่นคือเมื่อฉันพูดถึงโหมด
‫Swarm ซึ่งเป็นคุณลักษณะใหม่ล่าสุดในปี 2559 ที่รวบรวมการทำความเข้าใจความต้องการของภาชนะบรรจุและวิธีการใช้งานจริง
‫ในการผลิต
‫ดังนั้นที่เป็นแกนหลัก Swarm
‫นั้นเป็นโซลูชันการทำคลัสเตอร์เซิร์ฟเวอร์ที่รวบรวมระบบปฏิบัติการหรือโฮสต์ที่แตกต่างกันหรือโหนดหรือสิ่งใดก็ตามที่คุณต้องการเรียกพวกมันให้กลายเป็นหน่วยที่จัดการได้เพียงครั้งเดียวที่คุณสามารถรวบรวมวงจรชีวิต
‫เพื่อความชัดเจนเราไม่ได้พูดถึง Swarm ซึ่งฉันจะเรียกว่า Swarm Classic ซึ่งเป็นส่วนประกอบเสริมของ Docker ก่อนวันที่ 1 12 ออกมา มันเป็นตู้คอนเทนเนอร์ที่จะวิ่งเข้าไปใน
‫Docker นั่นก็แค่เอา Docker ของคุณออกคำสั่งและทำซ้ำมันไปยังเซิร์ฟเวอร์หลายเครื่อง
‫มันแก้ปัญหาบางอย่าง แต่มันก็ไม่ได้อยู่ในระดับที่เราต้องการเพื่อแก้ปัญหา 80%
‫ของกรณีที่คุณจะใช้บรรจุภัณฑ์ของคุณ
‫ในฤดูร้อนปี 2559
‫ที่ dockercon 2016 จริง ๆ แล้ว Docker ประกาศ Swarm Kit ซึ่งเป็นชุดของห้องสมุดหรือชุดเครื่องมือที่เกี่ยวข้องกับคุณสมบัติใหม่
‫ๆ ทั้งหมดของ Swarm
‫จากนั้นพวกเขาก็ติดที่ถูกต้องในเซิร์ฟเวอร์ Docker ตลอดหลักสูตรนี้คุณมีคุณสมบัติที่พร้อมใช้งานสำหรับคุณใน
‫CLI และบนเซิร์ฟเวอร์ของคุณ
‫ในที่สุดเราก็ได้ดำดิ่งลงสู่พวกมัน
‫ในเดือนมกราคมปี 2017 1 13 ออกมาและแน่นอนว่าเพราะโหมด Swarm
‫นั้นใหม่ในปี 2559 พวกเขาจะดำเนินการต่อเพื่อให้ดีขึ้นในปีต่อ ๆ ไป
‫ในเดือนมกราคมพวกเขาเพิ่มคุณสมบัติเพิ่มเติมที่เรียกว่า Stacks and Secrets รวมถึงโบนัสอื่น
‫ๆ ที่เราจะพูดถึงในภายหลัง สิ่งสำคัญคือต้องทราบว่า Swarm ไม่ได้เปิดใช้งานจริงนอกกรอบ
‫อันที่จริงแล้วในเครื่องของคุณคุณไม่สามารถใช้คำสั่งเหล่านี้ได้ที่นี่
‫ที่จริงแล้วจะทำให้คุณมีข้อผิดพลาดเพราะจะต้องเปิดใช้งาน Swarm
‫นั่นคือหนึ่งในเป้าหมายการออกแบบคือไม่มีโค้ด Swarm ใด ๆ
‫ที่จะส่งผลกระทบต่อ Docker daemon ที่มีอยู่และเครื่องมือและระบบทั้งหมดที่อยู่ในนั้นที่พึ่งพา
‫Docker อยู่แล้ว ทำงานต่อไปและไม่ถูกแทรกแซงโดย Swarm ตอนนี้เป็นส่วนหนึ่งของ
‫Docker แนวคิดพื้นฐานบางอย่างจริงๆก่อนที่เราจะเริ่มดำน้ำก็คือกล่องสีฟ้าเหล่านี้ที่คุณเห็นอยู่ด้านบนคือสิ่งที่เราเรียกว่าโหนดจัดการ (Manager
‫Node) และพวกมันมีฐานข้อมูลอยู่ในนั้นเรียกว่า Raft
‫Database
‫มันจัดเก็บการกำหนดค่าของพวกเขาและให้ข้อมูลทั้งหมดที่พวกเขาต้องการจะต้องเป็นผู้มีอำนาจในฝูง
‫ดังนั้นสิ่งที่เรามีที่นี่คือผู้จัดการที่แตกต่างกันสามคนที่ถูกเพิ่มเข้ามาในฝูงและพวกเขาเก็บสำเนาของฐานข้อมูลนั้นและเข้ารหัสการรับส่งข้อมูลของพวกเขาเพื่อให้มั่นใจในความสมบูรณ์และรับประกันความเชื่อมั่นว่าพวกเขาสามารถจัดการฝูง .
‫ด้านล่างเป็นสีเขียวเรามีบันทึกของผู้ปฏิบัติงานจริง ตอนนี้คุณสามารถเห็นได้ในแนวคิดของ Swarm
‫ตอนนี้เรามีผู้จัดการและคนงาน
‫สิ่งเหล่านี้แต่ละอันจะเป็นเครื่องเสมือนหรือฟิสิคัลโฮสต์เรียกใช้การแจกจ่ายเซิร์ฟเวอร์ Linux หรือ Windows
‫บางส่วน
‫นี่เป็นการแสดงให้เห็นว่าพวกเขาสื่อสารกันอย่างไรกับสิ่งที่เราเรียกว่าเครื่องบินควบคุมซึ่งเป็นวิธีการส่งคำสั่งซื้อไปรอบ ๆ
‫ฝูงการกระทำ ในมุมมองที่ซับซ้อนกว่านี้เล็กน้อยเรามีฐานข้อมูลฉันทามติ
‫Raft ที่ฉันกล่าวถึงซึ่งถูกจำลองแบบอีกครั้งในทุกโหนด
‫พวกเขาออกคำสั่งให้พนักงาน
‫ผู้จัดการเองสามารถเป็นพนักงานได้ แน่นอนคุณสามารถลดระดับและโปรโมตคนงานและผู้จัดการเป็นสองบทบาทที่แตกต่างกัน
‫เมื่อคุณคิดถึงผู้จัดการมักนึกถึงคนงานที่มีสิทธิ์ควบคุมฝูง
‫ข้อกำหนดเพียงประการเดียวสำหรับเซิร์ฟเวอร์เหล่านี้แต่ละตัวก็คือพวกเขากำลังเรียกใช้ Docker
‫เดียวกันกับที่คุณใช้อยู่ในขณะนี้ ด้วยแนวคิดของฝูงและผู้จัดการเหล่านี้ตอนนี้เรามีแนวคิดใหม่ของสิ่งที่ภาชนะของเรามีลักษณะ
‫ดังนั้นด้วยคำสั่งเรียกใช้ Docker เราสามารถปรับใช้คอนเทนเนอร์เดียวเท่านั้น
‫มันจะสร้างภาชนะ
‫มันเป็นเครื่องอะไรก็ตามที่ Docker CLI พูดคุยอยู่เสมอ
‫โดยปกติแล้วเครื่องของคุณหรือเซิร์ฟเวอร์ที่พวกเขาลงชื่อเข้าใช้ คำสั่งเรียกใช้
‫Docker นั้นไม่มีแนวคิดเกี่ยวกับวิธีการขยายหรือขยายขนาด
‫ดังนั้นเราต้องการคำสั่งใหม่เพื่อจัดการกับสิ่งนั้น
‫นั่นคือสิ่งที่คำสั่งบริการ Docker มาจาก
‫ในฝูงมันจะแทนที่คำสั่งเรียกใช้นักเทียบท่าและช่วยให้เราสามารถเพิ่มคุณสมบัติพิเศษให้กับภาชนะของเราเมื่อเราเรียกใช้เช่นแบบจำลองเพื่อบอกให้เราทราบจำนวนที่ต้องการเรียกใช้
‫สิ่งเหล่านี้เรียกว่าภารกิจ
‫บริการเดียวสามารถมีหลายงานและแต่ละงานเหล่านั้นจะเปิดตัวคอนเทนเนอร์
‫ในตัวอย่างนี้เราได้สร้างบริการโดยใช้บริการนักเทียบท่าสร้างเพื่อหมุนบริการ Nginx โดยใช้อิมเมจ Nginx
‫เหมือนที่เราเคยทำมาหลายครั้งแล้ว
‫แต่เราบอกแล้วว่าเราต้องการแบบจำลองสามแบบ
‫ดังนั้นมันจะใช้โหนดผู้จัดการเพื่อตัดสินใจว่าจะอยู่ในกลุ่มที่จะวางเหล่านั้น โดยค่าเริ่มต้นจะพยายามกระจายออก
‫แต่ละโหนดจะได้รับสำเนาของ Nginx คอนเทนเนอร์ของตัวเองถึงสามแบบจำลองที่เราบอกว่าเราต้องการ
‫นี่คือความเข้าใจที่รวดเร็วและพื้นฐานเกี่ยวกับวิธีการทำงานของผู้จัดการและสิ่งที่พวกเขากำลังทำอยู่เบื้องหลัง
‫คุณสมบัติทั้งหมดนี้เป็นของใหม่
‫ไม่ใช่เพียงแค่ใช้คำสั่งของคุณและรันบน API อย่างที่เราจะได้สัมผัสกับคำสั่ง Docker run
‫จริงๆแล้วมี
‫Swarm API ใหม่ทั้งหมดที่นี่ซึ่งมีบริการพื้นหลังมากมายเช่นตัวกำหนดตารางเวลาและตัวเลือกจ่ายงานและตัวจัดสรรและตัวจัดระเบียบซึ่งช่วยในการตัดสินใจเกี่ยวกับสิ่งที่คนงานควรดำเนินการในช่วงเวลาใดก็ตาม
‫ดังนั้นคนงานจึงรายงานต่อผู้จัดการและของานใหม่อย่างต่อเนื่อง
‫ผู้จัดการกำลังคอยทำงานใหม่อย่างต่อเนื่องและประเมินสิ่งที่คุณบอกให้ทำกับสิ่งที่พวกเขากำลังทำอยู่
‫จากนั้นหากมีการกระทบยอดเกิดขึ้นพวกเขาจะทำการเปลี่ยนแปลงดังกล่าวเช่นคุณอาจบอกให้มันหมุนงานซ้ำอีกสามครั้งในบริการนั้น
‫ดังนั้นผู้ดำเนินการจะตระหนักดีว่าจากนั้นจึงออกคำสั่งให้กับคนงานเป็นต้น
‫ด้วยโหมด
‫Swarm นี้เราได้รับชุดความสามารถที่เต็มไปด้วยคุณสมบัติซึ่งทำให้เราสามารถใช้ทักษะนักเทียบท่าที่มีอยู่แล้วที่เรามีอยู่แล้วเพื่อปรับใช้คอนเทนเนอร์ของเรากับอินเทอร์เน็ตในแบบที่เชื่อถือได้ ปัญหาที่เราจะมีเมื่อเราไปผลิต