ฉันหวังว่าคุณจะไม่พลาดซีรี่ส์ของบล็อกสอน DevOps ก่อนหน้านี้ ผ่านไฟล์ ที่นี่.แนวโน้มที่ไม่สามารถควบคุมได้ของ Docker container กำลังเติบโตขึ้นและองค์กรต่างๆกำลังมองหามืออาชีพที่มีไว้ครอบครอง .คราวนี้เราจะนำคุณไปสู่บทนำสู่ Docker
บทช่วยสอนนักเทียบท่า
บล็อกบทช่วยสอนนักเทียบท่านี้จะทำให้คุณได้รับแนวคิดและการปฏิบัติจริงกับ Docker - เทคโนโลยีการจัดตู้คอนเทนเนอร์ยุคใหม่
ในบล็อกนี้เราจะเน้นไปที่หัวข้อด้านล่าง:
- Virtualization คืออะไร?
- Containerization คืออะไร
- ข้อดีของ Containerization ผ่าน Virtualization
- ข้อมูลเบื้องต้นเกี่ยวกับ Docker
- ประโยชน์ของ Docker
- Virtualization กับ Containerization
- การติดตั้ง Docker
- Dockerfile, Docker Image & Docker Container
- Docker Hub คืออะไร
- สถาปัตยกรรม Docker
- นักเทียบท่าเขียน
นักเทียบท่ากำลังได้รับความนิยมและการใช้งานแพร่กระจายราวกับไฟป่า เหตุผลที่ทำให้ Docker ได้รับความนิยมเพิ่มขึ้นคือขอบเขตที่สามารถใช้ในองค์กรไอทีได้ มีเครื่องมือน้อยมากที่มีฟังก์ชั่นการใช้งานที่พบว่าตัวเองมีประโยชน์ต่อทั้งนักพัฒนาและผู้ดูแลระบบ Docker เป็นเครื่องมือหนึ่งที่ตอบสนองความต้องการของมันอย่างแท้จริง สร้าง , เรือ และ วิ่ง .
พูดง่ายๆว่า Docker เป็นแพลตฟอร์มการจัดเก็บซอฟต์แวร์ซึ่งหมายความว่าคุณสามารถสร้างแอปพลิเคชันของคุณบรรจุหีบห่อพร้อมกับการอ้างอิงลงในคอนเทนเนอร์จากนั้นคอนเทนเนอร์เหล่านี้สามารถจัดส่งไปทำงานบนเครื่องอื่นได้อย่างง่ายดาย
ตัวอย่างเช่น: ให้พิจารณาแอปพลิเคชันที่ใช้ linux ซึ่งเขียนทั้งใน Ruby และ Python แอปพลิเคชันนี้ต้องการ linux, Ruby และ Python เวอร์ชันเฉพาะ เพื่อหลีกเลี่ยงความขัดแย้งของเวอร์ชันใด ๆ ในตอนท้ายของผู้ใช้คุณสามารถสร้างคอนเทนเนอร์ linux docker โดยติดตั้ง Ruby และ Python เวอร์ชันที่ต้องการพร้อมกับแอปพลิเคชัน ตอนนี้ผู้ใช้ปลายทางสามารถใช้แอปพลิเคชันได้อย่างง่ายดายโดยเรียกใช้คอนเทนเนอร์นี้โดยไม่ต้องกังวลเกี่ยวกับการอ้างอิงหรือความขัดแย้งของเวอร์ชัน
คอนเทนเนอร์เหล่านี้ใช้ Containerization ซึ่งถือได้ว่าเป็น Virtualization เวอร์ชันที่พัฒนาแล้ว งานเดียวกันนี้สามารถทำได้โดยใช้ Virtual Machines แต่ก็ไม่ค่อยมีประสิทธิภาพ
โดยทั่วไปฉันจะได้รับคำถามในตอนนี้นั่นคือความแตกต่างระหว่าง Virtualization และ Containerization คืออะไร? คำศัพท์ทั้งสองนี้มีความคล้ายคลึงกันมาก ก่อนอื่นให้ฉันบอกคุณก่อนว่า Virtualization คืออะไร?
Virtualization คืออะไร?
Virtualization เป็นเทคนิคการนำเข้าระบบปฏิบัติการ Guest บนระบบปฏิบัติการโฮสต์ เทคนิคนี้เป็นการเปิดเผยในตอนแรกเนื่องจากอนุญาตให้นักพัฒนารันระบบปฏิบัติการหลายระบบในเครื่องเสมือนที่แตกต่างกันทั้งหมดที่ทำงานบนโฮสต์เดียวกัน สิ่งนี้ทำให้ไม่ต้องใช้ทรัพยากรฮาร์ดแวร์เพิ่มเติม ข้อดีของ Virtual Machines หรือ Virtualization คือ:
- ระบบปฏิบัติการหลายระบบสามารถทำงานบนเครื่องเดียวกันได้
- การบำรุงรักษาและการกู้คืนทำได้ง่ายในกรณีที่เกิดความล้มเหลว
- ต้นทุนรวมในการเป็นเจ้าของยังน้อยลงเนื่องจากความต้องการโครงสร้างพื้นฐานที่ลดลง
ในแผนภาพทางด้านขวาคุณจะเห็นว่ามีระบบปฏิบัติการโฮสต์ซึ่งมีระบบปฏิบัติการแขก 3 ระบบที่ทำงานอยู่ซึ่งไม่มีอะไรนอกจากเครื่องเสมือน
อย่างที่คุณไม่รู้ว่าไม่มีอะไรสมบูรณ์แบบ Virtualization ก็มีข้อบกพร่องเช่นกัน การเรียกใช้เครื่องเสมือนหลายเครื่องในระบบปฏิบัติการโฮสต์เดียวกันทำให้ประสิทธิภาพลดลง นี่เป็นเพราะระบบปฏิบัติการของแขกที่ทำงานบนโฮสต์ OS ซึ่งจะมีเคอร์เนลและชุดไลบรารีและการอ้างอิงของตัวเอง สิ่งนี้ใช้ทรัพยากรระบบจำนวนมากเช่นฮาร์ดดิสก์โปรเซสเซอร์และ RAM โดยเฉพาะ
ปัญหาอีกประการหนึ่งของ Virtual Machines ที่ใช้การจำลองเสมือนคือใช้เวลาเกือบหนึ่งนาทีในการบูตเครื่องสิ่งนี้สำคัญมากในกรณีของการใช้งานแบบเรียลไทม์
ต่อไปนี้เป็นข้อเสียของ Virtualization:
- การเรียกใช้เครื่องเสมือนหลายเครื่องทำให้ประสิทธิภาพการทำงานไม่เสถียร
- ไฮเปอร์ไวเซอร์ไม่มีประสิทธิภาพเท่ากับระบบปฏิบัติการโฮสต์
- กระบวนการบูตใช้เวลานานและใช้เวลานาน
ข้อเสียเหล่านี้ทำให้เกิดเทคนิคใหม่ที่เรียกว่า Containerization ตอนนี้ให้ฉันบอกคุณเกี่ยวกับ Containerization
Containerization คืออะไร?
Containerization เป็นเทคนิคการนำการจำลองเสมือนไปสู่ระดับระบบปฏิบัติการ ในขณะที่ Virtualization นำนามธรรมมาสู่ฮาร์ดแวร์ แต่ Containerization จะนำนามธรรมมาสู่ระบบปฏิบัติการ โปรดทราบว่า Containerization เป็น Virtualization ประเภทหนึ่ง อย่างไรก็ตาม Containerization มีประสิทธิภาพมากกว่าเนื่องจากไม่มีระบบปฏิบัติการของแขกที่นี่และใช้ระบบปฏิบัติการของโฮสต์แชร์ไลบรารีและทรัพยากรที่เกี่ยวข้องตามที่ต้องการซึ่งแตกต่างจากเครื่องเสมือน ไบนารีเฉพาะแอ็พพลิเคชันและไลบรารีของคอนเทนเนอร์ที่รันบนเคอร์เนลของโฮสต์ซึ่งทำให้การประมวลผลและการดำเนินการรวดเร็วมาก แม้แต่การบูตคอนเทนเนอร์ก็ใช้เวลาเพียงเสี้ยววินาที เนื่องจากคอนเทนเนอร์ทั้งหมดใช้ร่วมกันระบบปฏิบัติการโฮสต์และเก็บเฉพาะไบนารีและไลบรารีที่เกี่ยวข้องกับแอปพลิเคชัน มีน้ำหนักเบาและเร็วกว่า Virtual Machines
ข้อดีของ Containerization ผ่าน Virtualization:
- คอนเทนเนอร์บนเคอร์เนล OS เดียวกันมีน้ำหนักเบาและเล็กกว่า
- การใช้ทรัพยากรที่ดีขึ้นเมื่อเทียบกับ VM
- กระบวนการบู๊ตสั้นและใช้เวลาไม่กี่วินาที
ในแผนภาพด้านขวาคุณจะเห็นว่ามีระบบปฏิบัติการโฮสต์ที่ใช้ร่วมกันโดยคอนเทนเนอร์ทั้งหมด คอนเทนเนอร์มีเฉพาะไลบรารีเฉพาะแอปพลิเคชันซึ่งแยกกันสำหรับแต่ละคอนเทนเนอร์และเร็วกว่าและไม่เสียทรัพยากรใด ๆ
คอนเทนเนอร์เหล่านี้ทั้งหมดได้รับการจัดการโดยเลเยอร์ containerization ซึ่งไม่ได้มาจากระบบปฏิบัติการโฮสต์ ดังนั้นจึงจำเป็นต้องมีซอฟต์แวร์ซึ่งช่วยให้คุณสามารถสร้างและเรียกใช้คอนเทนเนอร์บนระบบปฏิบัติการโฮสต์ของคุณได้
ดูวิดีโอแนะนำ Docker นี้เพื่อความเข้าใจอย่างลึกซึ้งเกี่ยวกับ Docker
บทช่วยสอนนักเทียบท่าสำหรับมือใหม่ | Docker คืออะไร? | เครื่องมือ DevOps | Edureka
ตอนนี้ผมขอแนะนำคุณเกี่ยวกับ Docker
บทช่วยสอนนักเทียบท่า - ความรู้เบื้องต้นเกี่ยวกับนักเทียบท่า
Docker เป็นแพลตฟอร์มคอนเทนเนอร์ที่รวมแอปพลิเคชันของคุณและการอ้างอิงทั้งหมดเข้าด้วยกันในรูปแบบของคอนเทนเนอร์เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณทำงานได้อย่างราบรื่นในทุกสภาพแวดล้อม
ดังที่คุณเห็นในแผนภาพทางด้านขวาแต่ละแอปพลิเคชันจะทำงานบนคอนเทนเนอร์แยกกันและจะมีชุดไลบรารีและการอ้างอิงของตัวเอง นอกจากนี้ยังช่วยให้มั่นใจได้ว่ามีการแยกระดับกระบวนการซึ่งหมายความว่าแต่ละแอปพลิเคชันไม่ขึ้นอยู่กับแอปพลิเคชันอื่น ๆ ทำให้นักพัฒนามั่นใจได้ว่าจะสามารถสร้างแอปพลิเคชันที่จะไม่รบกวนซึ่งกันและกันได้
ในฐานะนักพัฒนาฉันสามารถสร้างคอนเทนเนอร์ที่มีแอปพลิเคชันต่าง ๆ ติดตั้งอยู่และมอบให้กับทีม QA ของฉันซึ่งจะต้องเรียกใช้คอนเทนเนอร์เพื่อจำลองสภาพแวดล้อมของนักพัฒนาเท่านั้น
ประโยชน์ของ Docker
ตอนนี้ทีม QA ไม่จำเป็นต้องติดตั้งซอฟต์แวร์และแอพพลิเคชั่นที่เกี่ยวข้องทั้งหมดเพื่อทดสอบโค้ดและสิ่งนี้ช่วยให้พวกเขาประหยัดเวลาและพลังงานได้มาก นอกจากนี้ยังช่วยให้มั่นใจได้ว่าสภาพแวดล้อมการทำงานมีความสอดคล้องกันในทุกคนที่เกี่ยวข้องในกระบวนการตั้งแต่การพัฒนาไปจนถึงการปรับใช้ จำนวนระบบสามารถปรับขนาดได้อย่างง่ายดายและสามารถปรับใช้โค้ดได้อย่างง่ายดาย
Virtualization กับ Containerization
Virtualization และ Containerization ช่วยให้คุณสามารถรันระบบปฏิบัติการหลายระบบภายในเครื่องโฮสต์
Virtualization เกี่ยวข้องกับการสร้างระบบปฏิบัติการจำนวนมากในเครื่องโฮสต์เครื่องเดียว ในทางกลับกัน Containerization จะสร้างคอนเทนเนอร์หลาย ๆ แบบสำหรับการใช้งานทุกประเภทตามที่ต้องการ
รูป: Big Data Analytics คืออะไร - Virtualization กับ Containerization
ดังที่เราเห็นจากภาพความแตกต่างที่สำคัญคือมีระบบปฏิบัติการสำหรับแขกหลายระบบใน Virtualization ซึ่งไม่มีอยู่ใน Containerization ส่วนที่ดีที่สุดของ Containerization คือมีน้ำหนักเบามากเมื่อเทียบกับ Virtualization ที่หนักหน่วง
ตอนนี้ให้เราติดตั้ง Docker
ติดตั้ง Docker:
ฉันจะติดตั้ง Docker ในเครื่อง Ubuntu 17.10 ของฉัน ต่อไปนี้เป็นขั้นตอนในการติดตั้ง Docker:
- ติดตั้งแพ็คเกจที่จำเป็น
- ตั้งค่าที่เก็บ Docker
- ติดตั้ง Docker บน Ubuntu
1. ติดตั้งแพ็คเกจที่จำเป็น:
มีแพ็คเกจบางอย่างที่คุณต้องการในระบบของคุณสำหรับการติดตั้ง Docker ดำเนินการคำสั่งด้านล่างเพื่อติดตั้งแพ็คเกจเหล่านั้น
sudo apt-get install curl apt-transport-https ca-certificate software-properties-common
2. ตั้งค่า Docker Repository:
ตอนนี้นำเข้าคีย์ GPG อย่างเป็นทางการของ Dockers เพื่อตรวจสอบลายเซ็นของแพ็คเกจก่อนที่จะติดตั้งด้วย apt-get เรียกใช้คำสั่งด้านล่างบนเทอร์มินัล:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | เพิ่ม sudo apt-key
ตอนนี้เพิ่มที่เก็บ Docker ในระบบ Ubuntu ของคุณซึ่งมีแพ็คเกจ Docker รวมถึงการอ้างอิงสำหรับคำสั่งด้านล่างนี้:
sudo add-apt-repository 'deb [arch = amd64] https://download.docker.com/linux/ubuntu $ (lsb_release -cs) เสถียร'
3. ติดตั้ง Docker บน Ubuntu:
ตอนนี้คุณต้องอัพเกรด apt index และติดตั้ง Docker community edition เพื่อให้รันคำสั่งด้านล่างนี้:
sudo apt-get update sudo apt-get install docker-ce
ยินดีด้วย! คุณติดตั้ง Docker สำเร็จแล้ว นอกจากนี้ตรวจสอบบางส่วนที่ใช้กันทั่วไป คำสั่ง Docker .
ตอนนี้ให้เราดูแนวคิด Docker ที่สำคัญบางประการ
Dockerfile, Docker Image และ Docker Container:
- Docker Image สร้างขึ้นโดยลำดับของคำสั่งที่เขียนในไฟล์ที่เรียกว่า Dockerfile
- เมื่อ Dockerfile ถูกเรียกใช้งานโดยใช้คำสั่ง docker จะส่งผลให้เป็น Docker Image พร้อมชื่อ
- เมื่ออิมเมจนี้ถูกเรียกใช้โดยคำสั่ง 'นักเทียบท่ารัน' มันจะเริ่มต้นแอปพลิเคชันหรือบริการใด ๆ ด้วยตัวมันเองที่ต้องเริ่มต้นในการเรียกใช้งาน
Docker Hub:
Docker Hub เปรียบเสมือน GitHub สำหรับ Docker Images โดยพื้นฐานแล้วมันเป็นรีจิสทรีบนคลาวด์ที่คุณสามารถค้นหา Docker Images ที่อัปโหลดโดยชุมชนต่างๆได้นอกจากนี้คุณยังสามารถพัฒนาภาพของคุณเองและอัปโหลดบน Docker Hub ได้ แต่ก่อนอื่นคุณต้องสร้างบัญชีบน DockerHub
สถาปัตยกรรมนักเทียบท่า:
ประกอบด้วย Docker Engine ซึ่งเป็นแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่มีองค์ประกอบหลักสามส่วน:
- เซิร์ฟเวอร์ซึ่งเป็นโปรแกรมที่รันมานานชนิดหนึ่งที่เรียกว่า daemon process (คำสั่ง docker)
- REST API ซึ่งระบุอินเตอร์เฟสที่โปรแกรมสามารถใช้เพื่อพูดคุยกับ daemon และสั่งให้ทำอะไร
- ไคลเอ็นต์อินเตอร์เฟสบรรทัดคำสั่ง (CLI) (คำสั่ง docker)
- CLI ใช้ Docker REST API เพื่อควบคุมหรือโต้ตอบกับ Docker daemon ผ่านการเขียนสคริปต์หรือคำสั่ง CLI โดยตรง แอปพลิเคชัน Docker อื่น ๆ จำนวนมากใช้ API และ CLI ที่เป็นพื้นฐาน
อ้างอิงบล็อกนี้เพื่ออ่านเพิ่มเติมเกี่ยวกับ .
สุดท้ายในบล็อกสอน Docker นี้ฉันจะพูดถึง Docker Compose
นักเทียบท่าเขียน:
โดยพื้นฐานแล้ว Docker Compose ใช้เพื่อเรียกใช้ Docker Containers หลายตัวเป็นเซิร์ฟเวอร์เดียว ขอยกตัวอย่าง:
สมมติว่าฉันมีแอปพลิเคชันที่ต้องใช้ WordPress, Maria DB และ PHP MyAdmin ฉันสามารถสร้างไฟล์เดียวซึ่งจะเริ่มทั้งสองคอนเทนเนอร์เป็นบริการโดยไม่จำเป็นต้องเริ่มแต่ละไฟล์แยกกัน มีประโยชน์มากโดยเฉพาะอย่างยิ่งหากคุณมีสถาปัตยกรรมไมโครเซอร์วิส
อ้างอิงบล็อกของฉันที่ คอนเทนเนอร์ Docker เพื่อทำความเข้าใจวิธีดำเนินการในทางปฏิบัติ
นอกจากนี้คุณสามารถอ่านบล็อกนี้เกี่ยวกับวิธีการจัดเก็บแอปพลิเคชันสแต็กเฉลี่ยโดยใช้ Docker Compose
ด้วยเหตุนี้เราจึงสิ้นสุดบล็อกแรกของ Docker Tutorial เกี่ยวกับ Introduction To Docker & Containerization
อ่านบล็อกถัดไปของเราเกี่ยวกับ Docker:
ตอนนี้คุณเข้าใจแล้วว่า DevOps คืออะไรลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมการรับรอง Edureka DevOps ช่วยให้ผู้เรียนมีความเชี่ยวชาญในกระบวนการและเครื่องมือต่างๆของ DevOps เช่น Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack และ GIT สำหรับการทำหลายขั้นตอนใน SDLC โดยอัตโนมัติ
วิธีสร้างชุด
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป