บทนำสู่ Docker คืออะไร สถาปัตยกรรม เวิร์กโฟลว์
เผยแพร่แล้ว: 2020-04-27สารบัญ
ประวัติของ Virtualization
จากนี้ไปไม่นาน การใช้บริการเป็นกระบวนการที่ทั้งช้าและเจ็บปวด กระบวนการนี้เกี่ยวข้องกับการเขียนโค้ดโดยทีมพัฒนาแล้วจึงทำให้ทีมปฏิบัติการใช้งานได้บนเครื่องจักรโลหะ ทีมปฏิบัติการเคยต้องตัดงานออกเนื่องจากต้องค้นหาคอมไพเลอร์ภาษา ไลบรารี และแพตช์เพื่อให้โค้ดทำงานได้
หากกระบวนการมีข้อผิดพลาดหรือจุดบกพร่อง จะต้องเริ่มต้นใหม่ทั้งหมด ทีมพัฒนาจะแก้ไขจุดบกพร่องหรือข้อผิดพลาด และทีมปฏิบัติการจะเริ่มปรับใช้รหัสอีกครั้ง
สิ่งต่างๆ ดีขึ้นเล็กน้อยเมื่อ Hypervisor ได้รับการพัฒนา Hypervisor คืออะไร? นี่คือคอลเล็กชันของเครื่องเสมือน (VM) ที่อาจทำงานหรือปิดอยู่อย่างต่อเนื่องเป็นช่วงเวลาปกติ โดยเฉพาะอย่างยิ่งเมื่อไม่ได้ใช้งาน เครื่องเสมือนช่วยได้อย่างแน่นอนโดยเร่งกระบวนการแก้ไขข้อผิดพลาดและปรับใช้รหัส แต่ก็ยังมีปัญหาอยู่บ้าง คอนเทนเนอร์ Docker เข้ามาเป็นตัวเปลี่ยนเกมอย่างแท้จริง พวกเขายังกล่าวถึงปัญหาที่มีอยู่ในเครื่องเสมือน
อ่าน: Kubernetes Vs. นักเทียบท่า: ความแตกต่างหลัก
Docker คืออะไร?
เป็นแพลตฟอร์มโอเพ่นซอร์สที่นักพัฒนาทั่วโลกใช้เพื่อรัน บรรจุ และแจกจ่ายแอปพลิเคชัน Docker ทำให้กระบวนการห่อหุ้มแอปพลิเคชันตั้งแต่ขั้นตอนแรกจนถึงขั้นตอนสุดท้าย ง่ายและมีประสิทธิภาพมาก เพื่อให้เข้าใจ Docker ได้ดีขึ้น คุณจะต้องเข้าใจว่าคอนเทนเนอร์คืออะไรและทำงานอย่างไร
คอนเทนเนอร์ไม่ได้เป็นเพียงแพ็คเกจแบบสแตนด์อโลน น้ำหนักเบา และปฏิบัติการได้ของส่วนหนึ่งของซอฟต์แวร์ที่มาพร้อมกับทุกสิ่งที่จำเป็นในการรัน คอนเทนเนอร์ไม่ได้ขึ้นอยู่กับแพลตฟอร์มแต่อย่างใด ดังนั้น Docker จึงเข้ากันได้กับทั้งเครื่องที่ใช้ Windows และ Linux นอกจากนี้ คุณยังสามารถเรียกใช้ Docker บนเครื่องเสมือนได้ หากจำเป็น วัตถุประสงค์พื้นฐานที่ Docker ตั้งเป้าไว้คือการให้นักพัฒนาใช้สถาปัตยกรรมแบบกระจายเพื่อเรียกใช้แอปพลิเคชันไมโครเซอร์วิส

ไม่เหมือนกับเครื่องเสมือนที่เคยใช้ในการแยกฮาร์ดแวร์ออกจากกัน Docker ยกระดับและดำเนินการแยกชุดทรัพยากรที่แตกต่างกันในระดับระบบปฏิบัติการ สิ่งนี้มีประโยชน์หลายประการ รวมถึงการแยกโครงสร้างพื้นฐานและการพกพาของแอพพลิเคชั่นอื่นๆ กล่าวอีกนัยหนึ่ง ไม่เหมือนเครื่องเสมือนที่ใช้ในการแยกเซิร์ฟเวอร์ฮาร์ดแวร์ วิธีการที่ใช้คอนเทนเนอร์ของ Docker ทำงานโดยการแยก OS core นี่เป็นทางเลือกที่ยอดเยี่ยมสำหรับการจำลองเสมือนที่นำไปสู่การสร้างอินสแตนซ์ที่มีน้ำหนักเบาได้รวดเร็วยิ่งขึ้น Docker มีให้เลือกสองเวอร์ชัน:
รุ่นองค์กร (EE):
เวอร์ชันนี้ออกแบบมาโดยเฉพาะสำหรับทีมไอทีและการพัฒนาองค์กร เวอร์ชันนี้ใช้ในการพัฒนา จัดส่ง และเรียกใช้แอปพลิเคชัน
ฉบับชุมชน (CE):
เวอร์ชันนี้ใช้โดยบุคคลและทีมขนาดเล็กที่กำลังสำรวจแอปที่ใช้คอนเทนเนอร์หรือเริ่มต้นใช้งาน Docker
อ่าน: แนวคิดและหัวข้อโครงการเต็มกอง
เวิร์กโฟลว์นักเทียบท่า
ในส่วนนี้ เราจะเน้นที่ Docker Engine รวมถึงส่วนประกอบต่างๆ ซึ่งจะช่วยให้เราเข้าใจวิธีการทำงานของ Docker ได้ดีขึ้น ก่อนที่เราจะไปยังสถาปัตยกรรม Docker Docker Engine คือพลังที่ช่วยให้การพัฒนาเพื่อทำหน้าที่ต่างๆ โดยใช้แอพที่ใช้คอนเทนเนอร์นี้ คุณสามารถใช้ส่วนประกอบตามรายการด้านล่างเพื่อสร้าง บรรจุ จัดส่ง และรันแอปพลิเคชันได้
1. นักเทียบท่าภูต
เป็นกระบวนการพื้นหลังที่ทำงานอย่างต่อเนื่องเพื่อช่วยคุณจัดการรูปภาพ ปริมาณพื้นที่เก็บข้อมูล เครือข่าย และคอนเทนเนอร์ มักจะมองหาคำขอ Docker API เพื่อประมวลผล
2. นักเทียบท่า CLI
เป็นไคลเอ็นต์อินเทอร์เฟซที่โต้ตอบกับ Docker Daemon ช่วยให้นักพัฒนาลดความซับซ้อนของกระบวนการจัดการอินสแตนซ์คอนเทนเนอร์ เป็นหนึ่งใน สาเหตุหลักที่ทำให้นักพัฒนาชอบ Docker มากกว่าแอปพลิเคชันอื่นๆ ที่คล้ายคลึงกัน

3. API ส่วนที่เหลือของ Docker Engine
อำนวยความสะดวกในการโต้ตอบระหว่าง Docker daemon และแอปพลิเคชัน โดยปกติไคลเอ็นต์ HTTP จะต้องเข้าถึง API เหล่านี้ได้
สถาปัตยกรรมนักเทียบท่า
สถาปัตยกรรม Docker เป็นสถาปัตยกรรมที่ใช้ไคลเอ็นต์-เซิร์ฟเวอร์ มีส่วนประกอบสำคัญ 3 ส่วนดังนี้
- โฮสต์นักเทียบท่า
- ลูกค้านักเทียบท่า
- การลงทะเบียนนักเทียบท่า
- นักเทียบท่าวัตถุ
ในระยะเริ่มต้น ไคลเอ็นต์ Docker จะโต้ตอบกับ daemon ซึ่งรับผิดชอบการทำงานส่วนใหญ่ที่เกี่ยวข้องกับการพัฒนา รัน และแจกจ่ายคอนเทนเนอร์ Docker
Docker daemon และไคลเอนต์สามารถทำงานบนระบบเดียวหรือผู้พัฒนาสามารถใช้ remote daemon เพื่อเชื่อมต่อกับไคลเอนต์ Docker ในพื้นที่ Rest API ใช้เพื่อสร้างการสื่อสารระหว่าง Docker daemon และไคลเอนต์ ซึ่งสามารถทำได้ผ่านอินเทอร์เฟซเครือข่ายหรือซ็อกเก็ต UNIX
มาพูดถึง ส่วนประกอบสถาปัตยกรรม Docker โดยละเอียดกัน
อ่านเพิ่มเติม: ทำไมต้องเป็น Full Stack Developer?
1. โฮสต์นักเทียบท่า
โฮสต์ Docker มีหน้าที่เรียกใช้ Docker daemon Docker Daemon รองรับคำขอ API รวมถึงนักเทียบท่าบิลด์และนักเทียบท่าที่ทำงานอยู่ นอกจากนี้ยังจัดการอิมเมจ เครือข่าย คอนเทนเนอร์ และอ็อบเจ็กต์ Docker อื่นๆ Daemons สามารถสื่อสารกันเองเพื่อจัดการบริการ Docker ต่างๆ
2. ลูกค้านักเทียบท่า
ไม่มีอะไรนอกจากวิธีที่ผู้ใช้ใช้ในการโต้ตอบกับ Docker ไคลเอ็นต์ Docker ส่งคำขอของเรา เช่น การเรียกใช้นักเทียบท่า และการสร้าง Docker ไปยัง Docker daemon คุณลักษณะที่สำคัญมากของไคลเอ็นต์ Docker คือสามารถสื่อสารกับภูตต่างๆ ได้
3. Docker Registry
รีจิสทรีเป็นแอปพลิเคชันฝั่งเซิร์ฟเวอร์ที่สามารถปรับขนาดได้และไร้สถานะ ไม่เพียงแค่เก็บอิมเมจ Docker เท่านั้น แต่ยังช่วยให้นักพัฒนาสามารถแจกจ่ายได้เช่นกัน Docker ให้ความยืดหยุ่นแก่เราในการสร้างภาพของเราเอง หรือมีรีจิสตรีสาธารณะที่เราสามารถใช้ได้ รีจิสทรีเหล่านี้รวมถึง Docker Cloud และ Docker Hub และอื่นๆ
การกำหนดค่าของ Docker นั้นจะเปลี่ยนเป็น Docker Hub และรีจิสตรีสาธารณะอื่นๆ เพื่อค้นหารูปภาพเสมอ อย่างไรก็ตาม เรามีตัวเลือกในการสร้างรีจิสทรีของเราเอง ดังนั้น เราสามารถดึงอิมเมจที่ต้องการออกมาโดยใช้รีจิสตรีของเราเองด้วยความช่วยเหลือของคำสั่งรันนักเทียบท่าและคำสั่งดึงนักเทียบท่า คำสั่ง Docker push ผลักอิมเมจที่ต้องการไปยังรีจิสตรีที่เราสร้างขึ้น

4. วัตถุนักเทียบท่า
เราใช้และสร้างวัตถุหลายอย่างในขณะที่ใช้ Docker ออบเจ็กต์เหล่านี้รวมถึงคอนเทนเนอร์ รูปภาพ ปลั๊กอิน วอลุ่ม เครือข่าย และอื่นๆ
5. ภาพนักเทียบท่า
อิมเมจ Docker เป็นเพียงเทมเพลตแบบอ่านอย่างเดียวที่ให้คำแนะนำที่จำเป็นในการสร้างคอนเทนเนอร์แก่เรา หลายครั้ง ภาพหนึ่งมีความเกี่ยวข้องกับอีกภาพหนึ่ง สิ่งที่ทำให้สองภาพแตกต่างคือการเพิ่มเลเยอร์การปรับแต่ง เพื่อให้แตกต่างออกไป รูปภาพสามารถกำหนดเป็นสแน็ปช็อตที่ไม่เปลี่ยนรูปของคอนเทนเนอร์ได้ รูปภาพมีขนาดเล็ก น้ำหนักเบา และรวดเร็ว
6. คอนเทนเนอร์นักเทียบท่า
มาดูแนวทางที่แตกต่างออกไปเพื่อทำความเข้าใจคอนเทนเนอร์ของ Docker ดังนั้น หากใช้รูปภาพเพื่อเป็นตัวแทนของคลาสได้ คอนเทนเนอร์ก็อาจเป็นอินสแตนซ์ได้ คอนเทนเนอร์เป็นอ็อบเจ็กต์รันไทม์ เราสามารถสร้าง เริ่ม ย้าย หยุด หรือลบคอนเทนเนอร์ด้วยความช่วยเหลือของ Docker CLI หรือ API คอนเทนเนอร์ยังสามารถต่อเข้ากับที่เก็บข้อมูลและเชื่อมต่อกับเครือข่ายหนึ่งเครือข่ายขึ้นไป เรายังสามารถสร้างอิมเมจใหม่ได้ ทั้งนี้ขึ้นอยู่กับสถานะปัจจุบันของคอนเทนเนอร์
บทสรุป
ตอนนี้คุณรู้แล้วว่าสถาปัตยกรรม Docker และส่วนประกอบคืออะไร คุณก็อยู่ในสถานะที่ดีขึ้นในการทำความเข้าใจความนิยมที่เพิ่มขึ้น ช่วยลดความยุ่งยากในการจัดการโครงสร้างพื้นฐานและช่วยให้อินสแตนซ์เร็วขึ้น เบาขึ้น และยืดหยุ่นมากขึ้น
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเข้ารหัสแบบเต็มสแต็ก โปรดดูประกาศนียบัตร PG ของ upGrad & IIIT-B ด้านการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติได้จริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ