บทช่วยสอนนักเทียบท่า - ข้อมูลเบื้องต้นเกี่ยวกับ Docker & Containerization



ในบทช่วยสอนนักเทียบท่านี้คุณจะเข้าใจถึงความจำเป็นเบื้องหลัง Docker และรับคำแนะนำเกี่ยวกับ Docker เป็นบล็อกแรกในชุดการสอน Docker

ฉันหวังว่าคุณจะไม่พลาดซีรี่ส์ของบล็อกสอน 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 คือ:

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

สถาปัตยกรรมเครื่องเสมือน - บทช่วยสอนนักเทียบท่าเกี่ยวกับบทนำสู่นักเทียบท่า - Edureka

ในแผนภาพทางด้านขวาคุณจะเห็นว่ามีระบบปฏิบัติการโฮสต์ซึ่งมีระบบปฏิบัติการแขก 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:

  1. ติดตั้งแพ็คเกจที่จำเป็น
  2. ตั้งค่าที่เก็บ Docker
  3. ติดตั้ง 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:

  1. Docker Image สร้างขึ้นโดยลำดับของคำสั่งที่เขียนในไฟล์ที่เรียกว่า Dockerfile
  2. เมื่อ Dockerfile ถูกเรียกใช้งานโดยใช้คำสั่ง docker จะส่งผลให้เป็น Docker Image พร้อมชื่อ
  3. เมื่ออิมเมจนี้ถูกเรียกใช้โดยคำสั่ง 'นักเทียบท่ารัน' มันจะเริ่มต้นแอปพลิเคชันหรือบริการใด ๆ ด้วยตัวมันเองที่ต้องเริ่มต้นในการเรียกใช้งาน

Docker Hub:

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

สถาปัตยกรรมนักเทียบท่า:

ประกอบด้วย Docker Engine ซึ่งเป็นแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่มีองค์ประกอบหลักสามส่วน:

  1. เซิร์ฟเวอร์ซึ่งเป็นโปรแกรมที่รันมานานชนิดหนึ่งที่เรียกว่า daemon process (คำสั่ง docker)
  2. REST API ซึ่งระบุอินเตอร์เฟสที่โปรแกรมสามารถใช้เพื่อพูดคุยกับ daemon และสั่งให้ทำอะไร
  3. ไคลเอ็นต์อินเตอร์เฟสบรรทัดคำสั่ง (CLI) (คำสั่ง docker)
  4. 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 โดยอัตโนมัติ

วิธีสร้างชุด

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป