Docker ปะทุขึ้นในสถานการณ์นี้ในปี 2013 และตั้งแต่นั้นมาก็ได้สร้างความฮือฮาไปทั่วแวดวงไอที โซลูชันที่ใช้เทคโนโลยีคอนเทนเนอร์ที่ Docker จัดหาให้นั้นเปลี่ยนวิธีดำเนินการด้านไอทีโดยสิ้นเชิง
ในบล็อกนี้ เราจะไขปริศนาหนึ่งในเทคโนโลยีที่ร้อนแรงที่สุดในไปป์ไลน์ DevOps (Development Operation) ในวันนี้
เหตุใดนักเทียบท่าจึงถูกโฆษณาเกินจริง
สมมติว่าคุณได้สร้างแอปพลิเคชันซึ่งใช้งานได้ดีบนเครื่องพัฒนาของคุณ จากนั้นคุณปรับใช้กับเครื่อง QA หรือเครื่องที่ใช้งานจริง และจู่ๆ มันก็ไม่ทำงานที่นั่น ทำไม บริษัทขนาดใหญ่ใช้เทคโนโลยีที่ใช้คอนเทนเนอร์ในการดำเนินธุรกิจ โดยปรับใช้คอนเทนเนอร์มากกว่า 2 พันล้านคอนเทนเนอร์ในศูนย์ข้อมูลทุกสัปดาห์ เพราะช่วยให้มีการผสานรวม การส่งมอบ การพกพา และความสามารถในการปรับขนาดของแอปพลิเคชันได้อย่างต่อเนื่อง เหตุใดคอนเทนเนอร์จึงได้รับความนิยมในทันใด นักเทียบท่าคือเหตุผล
เทคโนโลยีนักเทียบท่าได้กลายเป็นที่พูดถึงกันทั่วเมืองเพราะมันช่วยสร้างแอปพลิเคชันในภาษาใดก็ได้โดยใช้สแต็กใดก็ได้เพื่อเรียกใช้จากทุกที่บนอะไรก็ได้ โดยพื้นฐานแล้วจะช่วยให้นักพัฒนาลดการพึ่งพาส่วนประกอบอื่นๆ เพื่อเรียกใช้ซอฟต์แวร์เฉพาะ ดังเช่นกรณีข้างต้น เมื่อแอปพลิเคชันทำงานในเครื่องพัฒนาแต่หยุดตอบสนองเมื่อใช้งานในสภาพแวดล้อมอื่น Docker จะช่วยแก้ปัญหานี้ด้วยการจัดเตรียมโซลูชันเพื่อบรรจุ จัดส่ง และเรียกใช้แอปพลิเคชันใด ๆ เป็นคอนเทนเนอร์แบบพอเพียงซึ่งสามารถทำงานได้เสมือนจริง ได้ทุกที่ไม่ว่าจะอยู่ในสภาพแวดล้อมใดก็ตาม
เทคโนโลยีนี้กำลังมาแรงและจะมีบทบาทสำคัญในอนาคตของการพัฒนาซอฟต์แวร์
นักเทียบท่าคืออะไร
Docker เป็นเทคโนโลยีที่ใช้คอนเทนเนอร์แบบโอเพ่นซอร์ส โดยทั่วไปจะแยกแอปพลิเคชันออกจากระบบปฏิบัติการพื้นฐานที่รันอยู่ เหมือนกับ Virtual Machines (VM) ที่แยกระบบปฏิบัติการออกจากฮาร์ดแวร์พื้นฐานที่รันบน
ยังไม่มั่นใจ?
โอเค เมื่อใช้ Docker คุณสามารถสร้างแอปพลิเคชันต่างๆ และเรียกใช้บนเครื่องต่างๆ หรือคอมพิวเตอร์คนละเครื่อง หรือโฮสต์ต่างๆ และทำให้สื่อสารกันได้อย่างมีประสิทธิภาพและประสิทธิผล
มาตรฐานอุตสาหกรรมมักจะทำงานบน Virtual Machines (VM) เพื่อรันแอปพลิเคชันซอฟต์แวร์ แต่ปัจจุบันคอนเทนเนอร์กำลังได้รับแรงผลักดันในโลกไอทีและลดภาระงานของนักพัฒนา อย่างไร
เนื่องจากเป็นโครงการโอเพ่นซอร์สที่ให้คุณสะสมและจัดเก็บโค้ดของคุณ รวมถึงการกำหนดค่าหรือการอ้างอิงลงในแพ็คเกจขนาดเล็กที่เป็นระเบียบ ซึ่งคุณสามารถสร้าง ปรับใช้ และเรียกใช้แอปพลิเคชันหลายตัวบนเซิร์ฟเวอร์เดียวได้อย่างง่ายดายพี>
เครื่องเสมือน (VM) คืออะไร
เครื่องเสมือนเลียนแบบระบบคอมพิวเตอร์ซึ่งประกอบด้วย RAM โปรเซสเซอร์ ฯลฯ นอกเหนือจากการแสดงลักษณะที่เหมือนกับคอมพิวเตอร์จริงแล้ว ยังมีฟังก์ชันการทำงานเพื่อเรียกใช้ระบบปฏิบัติการและแอปพลิเคชันต่างๆ บนเครื่องอีกด้วย การกำหนดค่าและทรัพยากรได้รับการสนับสนุนโดยทรัพยากรทางกายภาพของระบบโฮสต์ เครื่องเสมือนเรียกอีกอย่างว่า Guest และระบบปฏิบัติการที่ทำงานบนเครื่องนั้นเรียกว่า Guest OS ระบบที่เครื่องเสมือนทำงานเรียกว่าระบบโฮสต์
Docker Containers คืออะไร
ก่อนที่เราจะเริ่มต้นด้วย Docker ทำงานอย่างไร คุณต้องล้างวิสัยทัศน์เกี่ยวกับคอนเทนเนอร์ คอนเทนเนอร์สามารถทำให้ง่ายขึ้นเป็นวิธีแก้ปัญหาการเรียกใช้ซอฟต์แวร์ที่เชื่อถือได้เมื่อย้ายจากสภาพแวดล้อมคอมพิวเตอร์หนึ่งไปยังอีกสภาพแวดล้อมหนึ่ง คอนเทนเนอร์ประกอบด้วยแอปพลิเคชัน การขึ้นต่อกัน ไลบรารี ไบนารี และไฟล์การกำหนดค่าอื่นๆ ที่จำเป็นในการเรียกใช้ซอฟต์แวร์ ทุกอย่างรวมอยู่ในแพ็คเกจเดียว เมื่อทำเช่นนั้น นักพัฒนาสามารถวางใจได้ว่าแอปพลิเคชันจะทำงานได้ทุกที่ทุกเวลา
Docker Containers ทำให้กระบวนการเรียกใช้แอปพลิเคชันบนเซิร์ฟเวอร์ในลักษณะที่ง่ายมาก ด้วยคอนเทนเนอร์ที่ใช้นักเทียบท่า คุณสามารถลดการปรับใช้ให้เหลือไม่กี่วินาที เนื่องจากคอนเทนเนอร์เหล่านี้มีความสามารถในการทำงานในส่วนต่างๆ ของแอปพลิเคชัน ซึ่งหมายความว่าหากจำเป็นต้องซ่อมแซมหรืออัปเดตใดๆ ในแอปพลิเคชันด้วยคอนเทนเนอร์ Docker คุณไม่จำเป็นต้องปิดแอปทั้งหมด แต่คุณสามารถทำงานเฉพาะส่วนของแอปพลิเคชันได้
นักเทียบท่าเทียบกับเครื่องเสมือน
ทั้งคอนเทนเนอร์ Docker และ Virtual Machine มีประโยชน์ในการแยกและการจัดสรรทรัพยากรที่คล้ายคลึงกัน แต่ถึงกระนั้นทั้งสองก็ทำหน้าที่ต่างกันและมีข้อดีในตัวเอง ให้เราพยายามทำความเข้าใจกรณีการใช้งานที่เป็นไปได้สำหรับทั้งสองอย่างและวิธีเอาชนะอีกฝ่ายหนึ่ง
- เมื่อพิจารณาถึงการใช้งานง่าย VM จึงให้รูปลักษณ์ที่สมบูรณ์ของระบบปฏิบัติการที่แน่นอนพร้อมอินเทอร์เฟซกราฟิกแบบแฟลชเต็มรูปแบบ เครื่องมือที่เกี่ยวข้องกับ VM นั้นง่ายต่อการเข้าถึงและทำงานด้วย นักเทียบท่ามีระบบนิเวศที่ซับซ้อนและต้องการความสามารถในการปรับตัวให้เข้ากับอินเทอร์เฟซบรรทัดคำสั่ง
- นอกเหนือจากการใช้งานง่ายแล้ว นักเทียบท่ายังมีข้อได้เปรียบในทุกกรณีการใช้งานนับจากนี้ คอนเทนเนอร์นักเทียบท่าไม่จำเป็นต้องใช้ฮาร์ดแวร์ไฮเปอร์ไวเซอร์ในการรัน เครื่องมือนักเทียบท่าที่นี่ตอบสนองยูทิลิตี้ของไฮเปอร์ไวเซอร์และสามารถเรียกใช้คอนเทนเนอร์หลายตัวได้ คอนเทนเนอร์ Docker ต้องการทรัพยากรน้อยกว่ามากในการทำงาน ซึ่งแตกต่างจาก VMs
- คอนเทนเนอร์ Docker มีขนาดเล็กกว่า น้ำหนักเบา และรวดเร็วในระดับที่สูงกว่าเมื่อเทียบกับ VM VM ต้องใช้เวลาพอสมควรในการบู๊ตและเตรียมอุปกรณ์ให้พร้อม คอนเทนเนอร์ใช้เวลาไม่กี่ไมโครวินาทีในการเริ่มต้นจากอิมเมจคอนเทนเนอร์
- คอนเทนเนอร์โอเพ่นซอร์สของ Docker นั้นพกพาสะดวกกว่ามากในไปป์ไลน์การพัฒนา คุณลักษณะที่กะทัดรัดและพกพาได้ช่วยให้แบ่งปันกับสมาชิกในทีมหลายคนได้ง่ายขึ้นสำหรับการพัฒนาแบบคู่ขนาน
- Docker ได้ลดการใช้ VM ในองค์กรขนาดใหญ่เนื่องจากข้อดีที่คล่องตัว เช่น ความเร็วและประสิทธิภาพ ไม่ถูกต้องที่จะบอกว่า VM จะหายไปในวันหนึ่ง แต่จะทำงานควบคู่ไปกับ Docker
ขั้นตอนการทำงานของนักเทียบท่า
วิธีที่ง่ายที่สุดในการอธิบายแนวคิดเบื้องหลังเทคโนโลยี Docker คือการอธิบายการทำงาน
เราจะอธิบายการทำงานของมันโดยใช้ Docker Hub เนื่องจากเป็น Docker Hub ที่น่าเชื่อถือที่สุด
เริ่มต้นใช้งานนักเทียบท่า:
- ตามลิงก์ไปยัง Docker Hub ? https://hub.docker.com/
- ตอนนี้เมื่อคุณมาถึงหน้าหลัก คุณสามารถสร้าง Docker ID ของคุณเองได้ฟรี หรือคุณสามารถสำรวจอิมเมจนักเทียบท่าต่างๆ และดึงแพ็คเกจน้ำหนักเบาเหล่านั้นตามความต้องการของคุณ
อิมเมจนักเทียบท่า
ใช้อิมเมจนักเทียบท่าเพื่อเปิดคอนเทนเนอร์ เราสามารถสร้างภาพที่เรากำหนดเองได้ มีน้ำหนักเบาซึ่งเพิ่มความสามารถในการนำกลับมาใช้ใหม่และลดการใช้ดิสก์
ตู้เทียบท่า
เราเปิดตัวคอนเทนเนอร์โดยดึงอิมเมจนักเทียบท่าจากฮับนักเทียบท่า เราสามารถบรรจุแอปพลิเคชันที่แตกต่างกันในคอนเทนเนอร์ที่แตกต่างกันได้ตามความต้องการ
Docker Hub ให้บริการ Docker Store เพื่อสำรวจเนื้อหา Public Docker ซึ่งคุณสามารถค้นพบคอนเทนเนอร์ ปลั๊กอิน และรุ่นนักเทียบท่ายอดนิยม
ที่เก็บนักเทียบท่า
Docker Repositories ช่วยให้คุณจัดการรูปภาพได้ในที่เดียว ที่เก็บเหล่านี้สามารถเป็นสาธารณะหรือส่วนตัวก็ได้ ที่เก็บข้อมูลสาธารณะสามารถแชร์กับทุกคนที่ชุมชน Docker build และสามารถแบ่งปันที่เก็บข้อมูลส่วนตัวกับเพื่อนร่วมงานของคุณเพื่อการพัฒนาแบบคู่ขนาน
คุณจะพบตัวเลือกในการทำให้เป็นสาธารณะหรือส่วนตัวหรือลบในเมนูการตั้งค่า
ไฟล์นักเทียบท่า
Dockerfile เป็นเอกสารข้อความที่มีคำสั่ง &คำสั่งเกี่ยวกับวิธีสร้างคอนเทนเนอร์ นอกจากนี้ เครื่องมือ Docker จะอ่านไฟล์นักเทียบท่าเหล่านี้และสร้างคอนเทนเนอร์ตามคำแนะนำที่กล่าวถึงใน Dockerfile
ข้อดีของการใช้นักเทียบท่า
มาสำรวจข้อดีหลักๆ ของ Docker และทำความเข้าใจว่าทำไมบริษัทใหญ่ๆ ถึงเน้นการใช้ Docker:
1. สภาพแวดล้อมการพัฒนาแบบแยกส่วน
นักเทียบท่าจัดเตรียมสภาพแวดล้อมแบบแยกให้กับแอปพลิเคชันและทรัพยากรทั้งหมด แต่ละคอนเทนเนอร์มีทรัพยากรของตัวเองที่แยกออกจากกัน หากไม่ต้องการคอนเทนเนอร์อีกต่อไป ทรัพยากรทั้งหมดสามารถปลดปล่อยได้โดยการลบทิ้ง ทรัพยากรเหล่านี้สามารถจัดสรรใหม่เพิ่มเติมไปยังคอนเทนเนอร์อื่นได้ เมื่อคอนเทนเนอร์ถูกลบ นักเทียบท่าจะทำให้แน่ใจว่าการลบทั้งหมดโดยการลบโฮสต์และไฟล์การกำหนดค่าทั้งหมด แต่ละแอปพลิเคชันมีคอนเทนเนอร์แยกต่างหากซึ่งทำงานบนสแต็กที่แยกจากกันโดยสิ้นเชิง นักเทียบท่ากำหนดทรัพยากรให้กับแอปพลิเคชันและตรวจสอบให้แน่ใจว่าแต่ละแอปพลิเคชันสามารถใช้ทรัพยากรที่จัดสรรให้เท่านั้น สิ่งนี้ช่วยในการรักษาสถานะการออนไลน์ของแอปพลิเคชันทั้งหมดเพื่อหลีกเลี่ยงการเสื่อมประสิทธิภาพ
2. ใช้งานได้ทันที
การใช้แพลตฟอร์มคอนเทนเนอร์ช่วยลดเวลาการปรับใช้เหลือไม่กี่วินาทีเนื่องจากไม่จำเป็นต้องบูตระบบปฏิบัติการ แพลตฟอร์มนี้สามารถจัดการเวิร์กโหลดแบบพกพาได้สูงด้วยทรัพยากรขั้นต่ำ มันสามารถทำงานแบบไดนามิกบนระบบท้องถิ่น เครื่องเสมือนที่ทำงานที่ศูนย์ข้อมูล เซิร์ฟเวอร์คลาวด์ หรือการรวมสภาพแวดล้อมเหล่านี้เข้าด้วยกัน
3. การพัฒนาอย่างรวดเร็วและการส่งมอบแอปพลิเคชันที่สอดคล้องกัน
Docker จัดการการกำหนดค่าภายในและการขึ้นต่อกันทั้งหมด ช่วยลดความจำเป็นในการแทรกแซงด้วยตนเองในระหว่างกระบวนการพัฒนาทั้งหมด
Docker นอกเหนือจากการให้การแยกไปยังแอปพลิเคชันต่างๆ แล้ว ยังให้การรวมที่มีประสิทธิภาพระหว่างแอปพลิเคชันเหล่านี้ทั้งหมด บัญชีการรวมอย่างต่อเนื่องสำหรับการส่งมอบแอปพลิเคชันที่สอดคล้องกัน
4. การทดสอบและการควบคุมเวอร์ชันอย่างต่อเนื่อง
แพลตฟอร์มที่ใช้คอนเทนเนอร์เป็นสภาพแวดล้อมที่เป็นเนื้อเดียวกันตั้งแต่การผลิตไปจนถึงการทดสอบและการควบคุมคุณภาพ ทีมทดสอบสามารถใช้คอนเทนเนอร์ที่ใช้ในการผลิตต่อไปได้ ซึ่งช่วยให้มั่นใจได้ถึงการทดสอบอย่างต่อเนื่องเมื่อหลายสตรีมขององค์กรต้องการทำงานพร้อมกัน
ตัวอย่างเช่น
• นักพัฒนาพัฒนาโค้ดบนระบบเนทีฟของตนและแจกจ่ายคอนเทนเนอร์กับทีมทดสอบและ QA
• ทีมทดสอบดึงคอนเทนเนอร์และพบปัญหาบางอย่าง
• พวกเขาแก้ไขปัญหา จุดบกพร่องและปัญหา และทำการทดสอบการยืนยันและการตรวจสอบความถูกต้อง
• เมื่อเสร็จสิ้นกระบวนการทดสอบ รูปภาพเดียวกันจะถูกส่งกลับไปยังสภาพแวดล้อมการผลิต
ประโยชน์หลักประการหนึ่งของการใช้แพลตฟอร์มที่ใช้คอนเทนเนอร์สำหรับการผลิตแอปพลิเคชันคือการควบคุมเวอร์ชัน คอนเทนเนอร์ติดตามการเปลี่ยนแปลงของทุกไฟล์หรือชุดของไฟล์ในนั้น เพื่อให้ผู้ใช้สามารถเรียกคืนเวอร์ชันเฉพาะในภายหลัง
ซึ่งจะช่วยในกรณีที่จำเป็นต้องอัปเกรดผลิตภัณฑ์ระหว่างรอบการเปิดตัวผลิตภัณฑ์ สามารถทำการเปลี่ยนแปลงที่จำเป็นกับคอนเทนเนอร์นักเทียบท่า ทดสอบและนำไปใช้ในคอนเทนเนอร์ที่มีอยู่ หากในกรณีที่การอัปเกรดทำให้สภาพแวดล้อมทั้งหมดเสียหาย คุณสามารถย้อนกลับเป็นเวอร์ชันก่อนหน้าได้อย่างง่ายดาย
5. ลดความต้องการฮาร์ดแวร์เฉพาะสำหรับทุกแอปพลิเคชัน
คอนเทนเนอร์นักเทียบท่าเป็นทางเลือกที่เบาและรวดเร็วกว่าเครื่องเสมือนที่ใช้ไฮเปอร์ไวเซอร์ เครื่องเสมือนต้องการไฮเปอร์ไวเซอร์ เช่น Virtualbox เพื่อเรียกใช้แอปพลิเคชันต่างๆ ในขณะที่คอนเทนเนอร์หลายตัวสามารถโฮสต์บนเครื่องมือนักเทียบท่าเดียวโดยไม่ต้องใช้ไฮเปอร์ไวเซอร์
คอนเทนเนอร์เป็นทางเลือกที่ยอดเยี่ยมสำหรับการปรับใช้ขนาดเล็กและขนาดกลางที่มีทรัพยากรน้อยลง
6. หลายแพลตฟอร์ม
คอนเทนเนอร์โอเพ่นซอร์สของนักเทียบท่าสามารถพกพาได้สูงโดยธรรมชาติ ผู้ให้บริการระบบคลาวด์รายใหญ่เกือบทั้งหมด เช่น Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure และ Open stack มีการสนับสนุนนักเทียบท่าแบบฝังเป็นฟังก์ชันการทำงานในตัว
แต่เดิมนักเทียบท่าเป็นระบบปฏิบัติการ Linux จนถึงฤดูใบไม้ร่วงปี 2016 หลังจากนั้นก็นำไปลงวินโดวส์ หลังจากเปิดตัว windows ได้ไม่นาน นักพัฒนาซอฟต์แวร์ได้สรุปเครื่องมือ, API และรูปแบบอิมเมจสำหรับทั้ง Linux และ Windows เพื่อการพัฒนาที่แตกต่างกัน
7. ประหยัดค่าใช้จ่ายสำหรับองค์กรระดับอุตสาหกรรม
ผลตอบแทนจากการลงทุน (ROI) เป็นพื้นฐานการจัดการที่สำคัญที่สุดสำหรับทุกบริษัทที่จัดตั้งขึ้น ทางออกที่ดีที่สุดคือทางออกที่สามารถลดต้นทุนในขณะที่เพิ่มผลกำไร องค์กรใหญ่ขึ้น ต้องใช้ทรัพยากรโครงสร้างพื้นฐานมากขึ้นสำหรับการผลิต
Docker ช่วยอำนวยความสะดวกด้านต้นทุนอย่างมีประสิทธิภาพโดยลดความต้องการทรัพยากรโครงสร้างพื้นฐานสำหรับการผลิต นักเทียบท่ายังช่วยลดต้นทุนของเซิร์ฟเวอร์และพนักงานในการบำรุงรักษาอีกด้วย ช่วยให้องค์กรสามารถสร้างรายได้ที่มั่นคงเป็นระยะเวลานานขึ้น
8. ความปลอดภัยและความน่าเชื่อถือ
เนื่องจากคอนเทนเนอร์โอเพ่นซอร์สของ Docker ถูกแยกออกจากกัน จึงให้สิทธิ์การควบคุมทั้งหมดแก่ผู้ใช้เกี่ยวกับโฟลว์การรับส่งข้อมูลและการจัดการ คอนเทนเนอร์ไม่สามารถตรวจสอบกระบวนการที่ทำงานบนคอนเทนเนอร์อื่นได้
นอกเหนือจากกลไกการรักษาความปลอดภัยเริ่มต้นแล้ว เครื่องมือรักษาความปลอดภัยและปลั๊กอินต่างๆ ก็มีจำหน่ายในท้องตลาด เครื่องสแกนภาพเช่น Claire ใช้เพื่อป้องกันอิมเมจคอนเทนเนอร์ภายในการลงทะเบียนนักเทียบท่า
ไดรฟ์เวอร์ชวลไลเซชันได้รับความนิยมอย่างมากในอุตสาหกรรมองค์กร การเปลี่ยนไปใช้สภาพแวดล้อมเสมือนอาจมีข้อเสียอยู่บ้าง แต่ก็มีข้อดีมากมายตั้งแต่การประหยัดเงินของคุณไปจนถึงการรักษาความต่อเนื่องทางธุรกิจของคุณ นักเทียบท่าเป็นหนึ่งในผู้บุกเบิกการคิดค้นไดรฟ์เวอร์ชวลไลเซชัน