12 แนวคิดโครงการ Docker ที่น่าสนใจสำหรับผู้เริ่มต้น [2022]

เผยแพร่แล้ว: 2021-01-07

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

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

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

ระบบนิเวศของ Docker ประกอบด้วยสี่โครงการหลัก ได้แก่ Moby, Kubernetes และ Containerd อย่างไรก็ตาม นั่นไม่ใช่ทั้งหมด – Docker มีอะไรมากกว่าสามโปรเจ็กต์นี้อีกมาก ในแต่ละวัน ชุมชน Docker ทำงานอย่างแข็งขันในการพัฒนาโปรเจ็กต์และเครื่องมือที่ดีที่สุดในระดับเดียวกันทั้งกับและสำหรับ Docker เพื่อให้นักพัฒนาทั่วโลกสามารถสร้างและปรับใช้แอปที่สามารถเรียกใช้ได้ทุกที่ หากคุณต้องการเรียนรู้ DevOps นักเทียบท่าเป็นส่วนสำคัญในการเรียนรู้

เรียนรู้การสร้างแอปพลิเคชัน เช่น Swiggy, Quora, IMDB และอื่นๆ

ในโพสต์นี้ เราจะนำเสนอโปรเจ็กต์ Docker ที่ดีที่สุดที่ Developer ทุกคนควรรู้!

สารบัญ

ไอเดียโปรเจ็กต์ Docker ยอดนิยม

1. RancherVM

ใครก็ตามที่ใช้ Docker คงรู้ว่าชาวไร่คืออะไร เป็นผู้ให้บริการคอนเทนเนอร์ตามบริการที่มีโฮสต์ของโครงสร้างการประสานและการจัดกำหนดการคอนเทนเนอร์ที่ใช้กันอย่างแพร่หลาย - Docker Swarm , Kubernetes และ Mesos RancherVM เป็นหนึ่งในโปรเจ็กต์ที่ไม่ค่อยมีคนรู้จักของ Rancher ซึ่งอนุญาตให้คุณเรียกใช้ VM ภายในคอนเทนเนอร์ Docker มาพร้อม Web UI สำหรับจัดการพับลิกคีย์ โหนดคอมพิวท์ VM และเข้าถึงคอนโซล VNC จากเว็บเบราว์เซอร์

ด้วย RancherVM คุณสามารถสร้าง VM ที่ทำงานภายใน Kubernetes pods หรือที่เรียกว่า VM Pods พ็อด VM แต่ละรายการมีคอนเทนเนอร์ที่เรียกใช้อินสแตนซ์เครื่องเสมือน ปัจจุบัน RancherVM รองรับเฉพาะอิมเมจ KVM ดังนั้น คุณสามารถจัดแพ็คเกจอิมเมจ KVM เป็นอิมเมจ Docker แจกจ่ายโดยใช้รีจิสตรี Docker (ตัวอย่าง, DockerHub) และเรียกใช้บน RancherVM

นอกจากนี้ RancherVM ยังขยาย Kubernetes API ด้วย Custom Resource Definitions (CRDs) คุณสามารถกำหนดข้อกำหนด VirtualMachine CRD โดยระบุอิมเมจพื้นฐาน จำนวนทรัพยากรในการประมวลผล และคู่คีย์ที่ได้รับอนุญาตให้เริ่มต้นเซสชัน SSH จากนั้น ตัวควบคุม Kubernetes จะสร้างพ็อด VM ตามข้อกำหนดที่คุณให้มา และแสดงเช่นเดียวกันในสถานะ VirtualMachine CRD

เรียนรู้เพิ่มเติม: โครงการ DevOps ที่น่าตื่นเต้น 10 อันดับแรกสำหรับผู้เริ่มต้น [2020]

2. Dockercraft

ในเดือนพฤศจิกายน 2558 Microsoft เปิดตัว Dockercraft ต่อหน้าสาธารณชน เปิดตัวเป็นโอเพ่นซอร์สบน GitHub ซึ่งได้รับการออกแบบมาอย่างชัดเจนเพื่อให้นักพัฒนาสามารถจัดการคอนเทนเนอร์ Docker ใน Minecraft เกมยอดนิยมที่ Microsoft ซื้อมาในราคา 2.5 พันล้านดอลลาร์สหรัฐ !

ตาม GitHub Dockercraft เป็น "ไคลเอนต์ Minecraft Docker แบบง่าย ๆ เพื่อแสดงภาพและจัดการคอนเทนเนอร์ Docker" ในสภาพแวดล้อม 3 มิติของ Minecraft มันไม่ใช่ตัวจัดการ Docker ที่ซับซ้อนอย่างแน่นอนที่นำมาใช้ใน Minecraft แต่เป็นวิธีที่ง่ายกว่าในการแสดงภาพและพลิกสวิตช์ในคอนเทนเนอร์ Docker

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

3. ไวน์

ข้อเสียเปรียบที่ใหญ่ที่สุดของ Docker คือแอป Dockerized ไม่ใช่ข้ามแพลตฟอร์ม หมายความว่าคุณไม่สามารถเรียกใช้แอป Docker Windows บน Linux ได้ เพื่อแก้ปัญหานี้ ไวน์ ถูกสร้างขึ้น Wine on Docker ได้รับการพัฒนาเพื่อให้แอป Windows สามารถทำงานบน Linux OS ได้เช่นเดียวกับแอปพลิเคชันในเครื่องที่สามารถเรียกใช้ได้จากทุกที่ในโลก บน Docker เรียกว่า Wine ในขณะที่ GitHub เราเรียกว่า Docker-Wine

Wine ใช้ เลเยอร์ความเข้ากันได้ ของไวน์ เพื่อรองรับแอป Windows บน Linux เนื่องจาก Wine มาพร้อมกับ ไดรเวอร์ Dynamic Video และ VirtualGL ที่รองรับทั้งในพื้นที่และระยะไกล จึงควรทำงานได้ดีกับการ์ด Nvidia ที่แกะกล่องและไดรเวอร์ Nvidia และการ์ดอื่นๆ ที่ใช้ไดรเวอร์ Mesa คุณสามารถกำหนดค่า Wine ให้ปรับให้เข้ากับไดรเวอร์ใดก็ตามที่คุณอาจติดตั้งโดยอัตโนมัติได้ หากเป็นไดรเวอร์ล่าสุดสำหรับสาขาของคุณ

4. นักเทียบท่า-Mon

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

โปรเจ็กต์นี้ยังอยู่ในระหว่างดำเนินการ และใช้ ฟีเจอร์สถิตินักเทียบท่า ที่ยังไม่ได้เปิดตัว ดังนั้น ในการใช้ Docker-Mon คุณจะต้องมี บิลด์ หลัก หรือเวอร์ชัน 1.5.0 ที่กำลังจะมีขึ้น (คุณสามารถตรวจสอบการเปิดใช้ v1.5.0-rc1 ได้ ที่นี่ )

5. Passenger-Docker

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

Passenger-Docker คือชุดของอิมเมจ Docker ที่ออกแบบมาเพื่อใช้เป็นฐานสำหรับอิมเมจเว็บแอป Ruby, Python, Node.js และ Meteor การรักษามนต์หลักของ Phusion Passenger โปรเจ็กต์ Passenger-Docker พยายามที่จะทำให้กระบวนการสร้างอิมเมจ Docker สำหรับเว็บแอพง่ายขึ้นและเร็วขึ้น

6. KubeVirt

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

KubeVirt มุ่งหวังที่จะขยายฟังก์ชันการทำงานของ Kubernetes โดยการรวมประเภททรัพยากรการจำลองเสมือนเพิ่มเติมผ่าน Custom Resource Definitions API ของ Kubernetes คุณสามารถใช้ KubeVirt เพื่อสร้าง VM ที่กำหนดไว้ล่วงหน้า เปิดใช้ VM หยุด VM ลบ VM และกำหนดเวลา VM บนคลัสเตอร์ Kubernetes อย่างไรก็ตาม KubeVirt ยังคงดำเนินการอยู่

อ่านเพิ่มเติม: Kubernetes Networking: คู่มือฉบับสมบูรณ์เพื่อทำความเข้าใจโมเดลเครือข่าย

7. ใบปะหน้า

Docket เป็นรีจิสทรีของ Docker แบบกำหนดเองที่อำนวยความสะดวกในการปรับใช้อย่างรวดเร็วผ่าน BitTorrent ช่วยให้คุณสามารถปรับใช้อิมเมจ Docker ในกลุ่มเครื่องขนาดใหญ่ด้วยความเร็วที่น่าประทับใจ Docket ได้รับการออกแบบและพัฒนาใน 48 ชั่วโมงใน Gopher Gala Golang 48 ชั่วโมง hackathon! Docket เขียนใน Golang เป็นมิตรกับผู้ใช้ และสามารถทำงานได้ดีกับรีจิสทรี Docker ส่วนตัวของคุณ

Docket ประกอบด้วยสามองค์ประกอบหลัก -

  • Docket Registry: เป็นบริการ REST ที่ทำหน้าที่เป็นรีจิสทรี มันสามารถรับ tarball อิมเมจ Docker จากลูกค้า จัดเก็บข้อมูลเมตาลงในฐานข้อมูล และสร้าง torrents ออกมาได้เช่นเดียวกับการเพาะ
  • Docket Client: เป็นอินเทอร์เฟซที่ผู้ใช้ปลายทางโต้ตอบ ช่วยให้คุณสามารถดูภาพที่มีอยู่ในรีจิสทรี พุชรูปภาพไปยังรีจิสทรี และดึงรูปภาพจากรีจิสทรี (ซึ่งจะทริกเกอร์การปรับใช้ BitTorrent)
  • BitTorrent Tracker: แม้ว่า Docket จะมีคุณลักษณะ BYOT (นำตัวติดตามของคุณมาด้วย) เราขอแนะนำให้คุณติดตั้ง opentracker เพื่อติดตาม BitTorrent

8. เครื่องมือย้ายคอนเทนเนอร์ (CMT)

สิ่งที่ดีเกี่ยวกับคอนเทนเนอร์ Docker ก็คือ พวกมันสามารถเคลื่อนย้ายได้ เช่นเดียวกับในนั้น พวกมันสามารถทำงานบนโฮสต์ประเภทใดก็ได้ที่ติดตั้ง Docker ไว้ อย่างไรก็ตาม Docker ไม่มีคุณสมบัติในตัวที่ให้คุณย้ายคอนเทนเนอร์ที่ทำงานอยู่จากคลัสเตอร์หนึ่งไปยังอีกคลัสเตอร์หนึ่งผ่านเครือข่าย เพื่อเพิ่มความท้าทาย Checkpoint & Restore (CR) ยังคงเป็นคุณลักษณะที่ค่อนข้างใหม่ซึ่งไม่สามารถใช้งานได้ทั่วไปสำหรับผู้ใช้คอนเทนเนอร์ CR ต้องการระดับความเข้าใจเกี่ยวกับฟังก์ชันการทำงาน และโดยปกติผู้ใช้ส่วนใหญ่ที่ไม่คุ้นเคยกับฟังก์ชัน CR จะได้รับข้อผิดพลาดขณะดำเนินการ CR เนื่องจากความแตกต่าง/ข้อจำกัดระหว่างต้นทางและโฮสต์เป้าหมาย

Container Migration Tool หรือ CMT ได้รับการพัฒนาโดยเฉพาะเพื่อต่อสู้กับปัญหาการย้ายถิ่นฐานนี้ แนวคิดเบื้องหลังการสร้าง CMT คือการสร้างเครื่องมือบรรทัดคำสั่งภายนอกที่สามารถใช้กับ Docker หรือ runC ที่อำนวยความสะดวกในการโยกย้ายสดของคอนเทนเนอร์ระหว่างโฮสต์ต่างๆ โดยดำเนินการตรวจสอบก่อนการย้ายข้อมูลและค้นหาโฮสต์เป้าหมายที่เหมาะสมโดยอัตโนมัติ

9. dockerfile_lint

Linters เป็นองค์ประกอบสำคัญในการพัฒนา toolchain จากด้านหน้า นักพัฒนา JavaScript ใช้กันอย่างแพร่หลายและมีประโยชน์อย่างยิ่งเมื่อนักพัฒนาจำนวนมากทำงานบนฐานโค้ดที่ใช้ร่วมกัน dockerfile_lint เป็น Linter ที่อิง ตาม กฎสำหรับ Dockerfiles

คุณสามารถใช้กฎ dockerfile_lint เพื่อตรวจสอบไวยากรณ์ของไฟล์ ความหมายโดยพลการ และแอ็ตทริบิวต์แนวปฏิบัติที่ดีที่สุดที่กำหนดโดยตัวเขียนไฟล์กฎ นอกจากนี้ คุณสามารถใช้ linter เพื่อตรวจสอบกฎ LABEL กับอิมเมจ Docker ไฟล์กฎเขียน ด้วย YAML กฎทั้งหมดถูกนำมาใช้โดยใช้นิพจน์ทั่วไป และสามารถเรียกใช้คำสั่งของ Dockerfile ได้ครั้งละหนึ่งคำสั่ง ไฟล์กฎประกอบด้วยสี่ส่วน –

  • ส่วนโปรไฟล์: ให้ข้อมูลที่จำเป็นเกี่ยวกับไฟล์กฎที่ช่วยให้ผู้ใช้เลือกไฟล์กฎที่เหมาะสมสำหรับ Dockerfile เฉพาะ
  • ส่วนทั่วไป: ประกอบด้วยกฎไวยากรณ์ทั่วไป
  • ส่วนกฎบรรทัด: ประกอบด้วยกฎที่ต้องเรียกใช้ตามคำสั่งที่กำหนดใน Dockerfile มีกฎสำหรับการตรวจสอบไวยากรณ์ของแต่ละคำสั่ง
  • ส่วนคำสั่งที่จำเป็น: ประกอบด้วยรายการคำสั่งที่ต้องมีอยู่ใน Dockerfile เพื่อให้ถือว่าใช้ได้

10. ด็อคเกอร์มิกซ์

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

โปรเจ็กต์ Dockermix ได้เปลี่ยนชื่อเป็น Maestro โดยมีการพัฒนาภายใต้องค์กร Toscanini ในการเข้าถึงซอร์สโค้ดปัจจุบัน คุณสามารถตรวจสอบ โครงการ Maestro

11. ตำรานักเทียบท่า

Docker Cookbook มีทรัพยากรที่จำเป็นทั้งหมดสำหรับการติดตั้ง Docker และการสร้าง การจัดการ และการใช้งาน Docker container โปรเจ็กต์ Docker นี้เชื่อมโยงกับ เอ็นจิ้น คอนเทนเนอร์ Docker ที่จัดจำหน่ายโดย Docker, Inc. เท่านั้น และไม่ได้ระบุถึงเครื่องมือในระบบนิเวศของ Docker หรือเทคโนโลยีอื่นๆ เช่น Cgroups หรือ AUFS

ในการใช้ Docker Cookbook คุณต้องติดตั้ง Chef v12.15 หรือใหม่กว่าในเครื่องของคุณ Cookbook รองรับหลายแพลตฟอร์ม รวมถึง Amazon Linux, Fedora, CentOS 7, Debian 8/9 และ Ubuntu 14.04/16.04 นอกจากนี้ยังสามารถตั้งค่าที่เก็บแพ็คเกจต้นน้ำ Docker ได้โดยอัตโนมัติ

12. ทกคุ

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

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

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

ห่อ

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

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

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

สมัครเลยตอนนี้สำหรับโปรแกรม Executive PG ในการพัฒนา Full Stack