ภาพรวมสถาปัตยกรรมนักเทียบท่าและส่วนประกอบนักเทียบท่า [สำหรับผู้เริ่มต้น]

เผยแพร่แล้ว: 2020-12-31

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

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

มีสองวิธีแก้ไขปัญหานี้ – คุณใช้ Virtual Machine หรือสภาพแวดล้อมที่มีคอนเทนเนอร์ เช่น Docker ในสมัยก่อน องค์กรเคยปรับใช้ VM สำหรับการเรียกใช้หลายแอปพลิเคชัน

เหตุใดพวกเขาจึงเริ่มใช้คอนเทนเนอร์บน VM ในบทความนี้ เราจะให้คำอธิบายโดยละเอียดของคำถามดังกล่าวทั้งหมด

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

สารบัญ

คอนเทนเนอร์นักเทียบท่า

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

ด้วยการแยกและการรักษาความปลอดภัยทั้งหมดที่มีให้โดยแพลตฟอร์ม Docker ช่วยให้คุณสามารถเรียกใช้คอนเทนเนอร์จำนวนมากพร้อมกันบนโฮสต์เฉพาะได้

เหตุผลที่ทำไมคอนเทนเนอร์ Docker ถูกนำมาใช้กันอย่างแพร่หลาย รวมถึง

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

ก่อนที่จะเจาะลึกในหัวข้อนี้ เราต้องแยกความแตกต่างระหว่างแนวทางปฏิบัติเสมือนจริงแบบดั้งเดิมออกจากคอนเทนเนอร์รุ่นใหม่

Virtual Machines Vs Docker คอนเทนเนอร์

ก่อนที่เราจะใช้คอนเทนเนอร์สำหรับแนวทางปฏิบัติ DevOps เครื่องเสมือนนั้นอยู่เหนือชั้น เราเคยสร้าง VM สำหรับแต่ละแอปพลิเคชัน

แม้ว่า VM จะตอบสนองความจำเป็นเกือบทั้งหมด แต่ข้อเสียของการใช้ VM ก็ยุ่งยากและจัดสรรทรัพยากรหน่วยความจำและฮาร์ดแวร์ที่จำเป็นทั้งหมดจากเครื่องโฮสต์ที่เกี่ยวข้อง

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

ที่มาของภาพ

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

เครื่องยนต์นักเทียบท่า

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

เซิร์ฟเวอร์ (ภูต)

Docker daemon เป็นกระบวนการต่อเนื่องที่ทำงานอยู่เบื้องหลังและจัดการอ็อบเจ็กต์ Docker ทั้งหมด มันรับฟังคำขอ Docker API ที่ส่งโดยไคลเอนต์และประมวลผลอย่างต่อเนื่อง

พักผ่อน API

เป็นอินเทอร์เฟซที่ไคลเอ็นต์ Docker ใช้เพื่อโต้ตอบกับ Docker daemon ลูกค้าสามารถพูดคุยกับภูตผ่าน API และให้คำแนะนำได้

ลูกค้า

Docker Client คือ Command Line Interface (CLI) ที่สามารถโต้ตอบกับ daemon ทำให้กระบวนการทั้งหมดของการจัดการคอนเทนเนอร์ง่ายขึ้น

ที่มาของภาพ

Docker Client (ซึ่งสามารถเป็นไคลเอนต์ HTTP เช่น CLI) พูดคุยกับ daemon ซึ่งทำงานอย่างหนักในการสร้าง รัน และแบ่งปันคอนเทนเนอร์ ไคลเอ็นต์และภูตสามารถรันบนเครื่องเดียวกันหรือเชื่อมต่อไคลเอ็นต์กับรีโมต daemon ไคลเอ็นต์และ daemon สื่อสารกันโดยใช้ Rest API ผ่านซ็อกเก็ตหรืออินเทอร์เฟซเครือข่าย Docker Client ช่วยให้ผู้ใช้จัดการอ็อบเจ็กต์ Docker เช่น คอนเทนเนอร์ รูปภาพ วอลุ่ม ฯลฯ เรียนรู้เพิ่มเติมเกี่ยวกับโปรเจ็กต์ Docker

ลงทะเบียนเรียน หลักสูตรการพัฒนาซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

ส่วนประกอบทางสถาปัตยกรรม

ตามที่กล่าวไว้ก่อนหน้านี้ Docker ใช้สถาปัตยกรรม Client-Server โดยที่ Client จะพูดคุยกับ daemon ผ่าน Rest API สถาปัตยกรรม Docker ประกอบด้วยองค์ประกอบหลายอย่าง ดังที่อธิบายด้านล่าง

ที่มาของภาพ

ภูต

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

ลูกค้า

ผู้ใช้ Docker สามารถสื่อสารกับ daemon โดยใช้ Docker Client ผู้ใช้รันคำสั่งเช่น “Docker run …” โดยใช้ไคลเอนต์เช่น CLI ซึ่งจะส่งต่อคำสั่งเหล่านี้ไปยัง Docker (daemon) ในที่สุดก็ดำเนินการตามนั้น ไคลเอ็นต์ Docker สื่อสารกับภูตหลายตัว

ทะเบียน

มันเก็บ Docker Images และสามารถเป็นสาธารณะหรือส่วนตัวได้ Docker ได้รับการกำหนดค่าให้ค้นหารูปภาพโดยค่าเริ่มต้นบน Docker Hub เมื่อไคลเอนต์ออกคำสั่ง pull หรือ run รูปภาพจะถูกดึงออกจากที่เก็บ

วัตถุนักเทียบท่า

เมื่อทำงานกับ Docker เราโต้ตอบกับวัตถุหลายอย่าง เช่น คอนเทนเนอร์ รูปภาพ วอลุ่ม เครือข่าย ฯลฯ

บางส่วนของวัตถุเหล่านี้คือ

รูปภาพ

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

ตู้คอนเทนเนอร์

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

เครือข่าย

Docker Networks อนุญาตให้คอนเทนเนอร์แยกในเครือข่ายเดียวกันเพื่อสื่อสารและแบ่งปันทรัพยากร เครือข่ายบางเครือข่ายที่ Docker ให้บริการ ได้แก่ บริดจ์ โฮสต์ โอเวอร์เลย์ Macvlan เป็นต้น

พื้นที่จัดเก็บ

Docker ช่วยให้คุณจัดเก็บข้อมูลภายในเลเยอร์คอนเทนเนอร์ที่เขียนได้โดยใช้ไดรเวอร์ Docker อนุญาตให้ใช้สี่ตัวเลือกสำหรับการจัดเก็บข้อมูลแบบถาวร – Docker Volumes, Volume Containers, Directory Mounts และ Storage Plugins

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

บทสรุป

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

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

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

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

เรียนรู้สถาปัตยกรรม Docker ด้วย upGrad

เริ่มต้นเส้นทางการสร้างแอปพลิเคชันของคุณอย่างรวดเร็วด้วย upGrad

upGrad Education Pvt. Ltd. ขอเสนอหลักสูตรพิเศษเฉพาะด้านการพัฒนาซอฟต์แวร์ใน DevOps ซึ่งทำให้ผู้สนใจพร้อมที่จะซึมซับไอทียักษ์ใหญ่

ไฮไลท์ของหลักสูตร

หลักสูตร Executive PG ของ upGrad ด้านความเชี่ยวชาญด้านการพัฒนาซอฟต์แวร์ใน Big Data เป็นหลักสูตรออนไลน์ที่ออกแบบมาอย่างดีโดยแบ่งออกเป็น 12 เดือน

ในหลักสูตรนี้ คุณจะ

  • รับสิทธิ์พิเศษในการเข้าถึงเนื้อหา Data Science และ Machine Learning
  • ทำงานในโครงการและการมอบหมายสด
  • รับการสนับสนุนด้านอาชีพ 360 องศา
  • เรียนรู้สิบภาษาและเครื่องมือการเขียนโปรแกรม
  • รับคำปรึกษานักเรียนโดยเฉพาะ

ทำให้ตัวเองพัฒนาแอปพลิเคชัน DevOps ให้พร้อมด้วย upGrad

รอทำไม

สมัครวันนี้!

เตรียมความพร้อมสู่อาชีพแห่งอนาคต

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์