แนะนำเทคโนโลยีคอนเทนเนอร์ (Introduction to Container Technology)

ที่มาของเทคโนโลยีคอนเทนเนอร์

           ก่อนที่จะแนะนำให้รู้จักกับเทคโนโลยีคอนเทนเนอร์นั้น อยากให้ลองนึกถึงขั้นตอนการติดตั้งโปรแกรมหรือระบบงานต่าง ๆ ที่ใช้กันอยู่ในปัจจุบันเสียก่อน ก่อนติดตั้งระบบงานต่าง ๆ นั้นผู้ดูแลระบบต้องอ่านคู่มือการติดตั้งเสียก่อน คู่มือการติดตั้งจะบอกว่าระบบงานนั้น ๆ จำเป็นต้องติดตั้งระบบปฏิบัติการใด ๆ เช่น Windows Server หรือ Linux รุ่นใดบ้าง เช่น Windows Server 2008 หรือสูงกว่า ต้องทำงานร่วมกับฐานข้อมูลอะไร เช่น Oracle 10g หรือ MS SQL หรือต้องการสภาพแวดล้อมอื่น ๆ อะไรบ้าง เช่น ต้องมี IIS 3.0 ขึ้นไป หรือ Apache 2 หรือต้องมี Java Runtime 9 หรือต้องมี .NET Framework 3.5 เป็นต้น  และบ่อยครั้งที่ได้สร้างสภาพแวดล้อมต่าง ๆ ตามคู่มือติดตั้งแล้ว แต่ก็ไม่สามารถติดตั้งโปรแกรมหรือระบบงานได้ หรืออาจจะติดตั้งได้แต่มีปัญหาเมื่อใช้งาน  หรือเมื่อใช้งานไประยะหนึ่งก็มี update patch ของระบบปฏิบัติการหรือส่วนอื่น ๆ ออกมาเพื่อแก้ไขข้อผิดพลาดหรือเพื่อแก้ไขปัญหาด้านความมั่นคงปลอดภัย และบ่อยครั้งเมื่อติดตั้ง update patch ไปแล้วก็จะเกิดปัญหาทำให้โปรแกรมหรือระบบงานใช้งานไม่ได้ จึงกลายเป็นแนวปฏิบัติของผู้ดูแลระบบที่จะไม่ติดตั้งอะไรเพิ่มเติมหรือเปลี่ยนแปลงรุ่นของสภาพแวดล้อมต่าง ๆของเครื่องคอมพิวเตอร์แม่ข่ายที่ติดตั้งโปรแกรมหรือระบบงานที่ใช้งานอยู่ เพราะเกรงว่าจะมีปัญหาอื่น ๆ ตามมา แต่การที่ผู้ดูแลระบบไม่ติดตั้ง update patch โดยเฉพาะ update patch ที่เป็น security patch อย่างรวดเร็วนั้นก็เกิดผลกระทบอื่น ๆ ตามมา ทำให้เครื่องคอมพิวเตอร์แม่ข่ายเครื่องนั้น ๆ มีจุดอ่อนที่จะถูกโจมตี หรือ ถูกเจาะระบบ ได้โดยง่าย

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

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

คอนเทนเนอร์กับคำสั่งช่วยติดตั้งโปรแกรม

           ที่ผ่านมานั้น วงการเทคโนโลยีสารสนเทศได้พยายามแก้ปัญหาเรื่องสภาพแวดล้อมในการติดตั้งโปรแกรมต่าง ๆ มาอย่างต่อเนื่อง การติดตั้งโปรแกรมต่าง ๆ โดยใช้ apt หรือ yum ก็จะช่วยลดปัญหาเรื่องสภาพแวดล้อมต่าง ๆ ได้ แต่ปัญหาก็ยังไม่หมดไปเพราะหากโปรแกรมที่ต้องการติดตั้งในคอมพิวเตอร์เครื่องเดียวกันต้องการสภาพแวดล้อมที่แตกต่างกัน เช่น ต้องการ php คนละรุ่น หรือต้องการฐานข้อมูลคนละรุ่น ก็จะทำให้เกิดปัญหาการติดตั้งโปรแกรมประกอบรุ่นที่แตกต่างกันในคอมพิวเตอร์เครื่องเดียวกัน วิธีหนึ่งในการแก้ปัญหานี้คือการทำให้คอมพิวเตอร์เครื่องเดียวกลายเป็นคอมพิวเตอร์หลาย ๆ เครื่องโดยใช้เทคโนโลยีการจำลองเครื่องคอมพิวเตอร์ (Virtualization)

คอนเทนเนอร์กับการจำลองเครื่องคอมพิวเตอร์ (Container and Virtualization)

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



รูปที่ 1 เปรียบเทียบระหว่างเทคโนโลยีคอนเทนเนอร์กับเทคโนโลยีการจำลองเครื่องคอมพิวเตอร์

 

           จากรูปจะเห็นได้ว่าเทคโนโลยีจำลองเครื่องคอมพิวเตอร์จะสิ้นเปลืองทรัพยากรมากกว่า คือมีส่วนของ Hypervisor ที่ทำให้สามารถติดตั้งระบบปฏิบัติการหลาย ๆ รุ่น หลาย ๆ แบบที่เหมาะสมกับโปรแกรม/ระบบงานแต่ละชนิด การติดตั้งระบบปฏิบัติการซ้ำ ๆ บนเครื่องคอมพิวเตอร์เดียวกัน(แม้จะผ่าน Hypervisor ก็ตาม)ทำให้สิ้นเปลืองทรัพยากร ส่วนการติดตั้งโปรแกรม/ระบบงานที่หลากหลายผ่านคอนเทนเนอร์นั้นใช้ทรัพยากรน้อยกว่ามาก

เริ่มต้นใช้งานคอนเทนเนอร์ได้อย่างไร

           โปรแกรมที่ทำให้เครื่องคอมพิวเตอร์กลายเป็นคอนเทนเนอร์นั้นมีหลากหลาย แต่โปรแกรมที่เป็นที่นิยมและใช้งานอย่างแพร่หลายมีชื่อว่า Docker ผู้สนใจสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ Docker และนำมาใช้งานโดยไม่มีค่าใช้จ่ายได้จาก https://docs.docker.com/install/