Docker Images และคอนเทนเนอร์แตกต่างกันอย่างไร
Docker Image และคอนเทนเนอร์คือเทคโนโลยีการปรับใช้แอปพลิเคชัน ปกติแล้วการเรียกใช้แอปพลิเคชันใดๆ จะต้องติดตั้งเวอร์ชันที่ตรงกับระบบปฏิบัติการของเครื่องของคุณ แต่คุณสามารถสร้างแพ็กเกจซอฟต์แวร์เดียว หรือคอนเทนเนอร์ที่ทำงานในทุกประเภทของอุปกรณ์และระบบปฏิบัติการได้แล้วตอนนี้ Docker คือแพลตฟอร์มซอฟต์แวร์ที่บรรจุซอฟต์แวร์ลงในคอนเทนเนอร์ Docker Image คือเทมเพลตแบบอ่านอย่างเดียวที่มีคำแนะนำสำหรับการสร้างคอนเทนเนอร์ Docker Image คือสแนปช็อตหรือพิมพ์เขียวของไลบรารีและการอ้างอิงที่จำเป็นภายในคอนเทนเนอร์สำหรับการเรียกใช้แอปพลิเคชัน
เหตุใดจึงใช้ Image และคอนเทนเนอร์ Docker
คอนเทนเนอร์อนุญาตให้นักพัฒนาทำแพ็คเกจซอฟต์แวร์เพื่อทำงานบนระบบเป้าหมายใดก็ได้ ก่อนหน้านี้ คุณต้องทำแพ็คเกจซอฟต์แวร์โดยเฉพาะสำหรับระบบเป้าหมายที่แตกต่างกัน ตัวอย่างเช่น หากคุณต้องการให้แอปพลิเคชันทำงานบน macOS และ Windows คุณต้องเปลี่ยนการออกแบบแอปพลิเคชันและจัดทำแพ็คเกจสำหรับระบบต่างๆ
การทำให้เป็นคอนเทนเนอร์ทำให้แอปพลิเคชันซอฟต์แวร์ทำงานเป็นไมโครเซอร์วิสในสถาปัตยกรรมฮาร์ดแวร์แบบกระจายและข้ามแพลตฟอร์ม เนื่องจากคอนเทนเนอร์สามารถพกพาได้สูง แอปพลิเคชันซอฟต์แวร์เหล่านี้จึงทำงานบนเครื่องเกือบทุกชนิดพร้อมการปรับใช้ที่รวดเร็ว ตัวอย่างเช่น แอปพลิเคชันขององค์กรอาจมีไมโครเซอร์วิสหลายร้อยรายการ พวกเขาสามารถทำงานเป็นคอนเทนเนอร์ในเครื่องและ Virtual Machine (VM) หลายเครื่องในศูนย์ข้อมูลและระบบคลาวด์เฉพาะ
วิธีการทำงาน: Docker Image เทียบกับ คอนเทนเนอร์ Docker
Docker เป็นแพลตฟอร์มการทำคอนเทนเนอร์ที่คุณสามารถใช้เพื่อจัดแพ็คเกจซอฟต์แวร์ในคอนเทนเนอร์และทำงานบนเครื่องเป้าหมาย คอนเทนเนอร์ Docker ทำงานบนเครื่องหรือเครื่องเสมือนใดๆ ที่ติดตั้งเครื่องมือ Docker และทำงานโดยปราศจากความรู้เกี่ยวกับสถาปัตยกรรมระบบพื้นฐาน เครื่องมือ Docker ทำงานบนระบบปฏิบัติการ Linux เท่านั้น คอนเทนเนอร์ Docker เป็นคอนเทนเนอร์ที่สร้างขึ้นโดยใช้แพลตฟอร์มการทำคอนเทนเนอร์ของ Docker นอกจากนี้ยังมีแพลตฟอร์มคอนเทนเนอร์อื่นๆ ที่ได้รับความนิยมน้อยกว่า
อ่านบทความเกี่ยวกับ Containerization »
คอนเทนเนอร์ Docker ทำงานอย่างไร
คอนเทนเนอร์ Docker เป็นสภาพแวดล้อมรันไทม์ที่มีส่วนประกอบที่จำเป็นทั้งหมด เช่น โค้ด การพึ่งพากัน และไลบรารี – ซึ่งจำเป็นสำหรับการเรียกใช้โค้ดแอปพลิเคชันโดยไม่ต้องใช้การพึ่งพากันของเครื่องโฮสต์ รันไทม์ของคอนเทนเนอร์นี้ทำงานบนเครื่องมือบนเซิร์ฟเวอร์ เครื่อง หรืออินสแตนซ์ระบบคลาวด์ เครื่องมือเรียกใช้หลายคอนเทนเนอร์ขึ้นอยู่กับทรัพยากรพื้นฐานที่มีอยู่
ในการปรับใช้และปรับขนาดชุดของคอนเทนเนอร์เพื่อสื่อสารอย่างมีประสิทธิภาพระหว่างเครื่องต่างๆ หรือเครื่องเสมือน คุณต้องมีแพลตฟอร์มการควบคุมระบบคอนเทนเนอร์ เช่น Kubernetes สิ่งนี้ช่วยได้ไม่ว่าเครื่องของคุณจะอยู่ในองค์กรหรือในระบบคลาวด์ Kubernetes จัดการเครื่องหลายเครื่องหรือที่เรียกว่าคลัสเตอร์ ภายใต้การดำเนินการคอนเทนเนอร์
Docker Image ทำงานอย่างไร
Docker Image หรือ Image คอนเทนเนอร์เป็นไฟล์ปฏิบัติการแบบเดี่ยวที่ใช้สร้างคอนเทนเนอร์ Image คอนเทนเนอร์นี้ประกอบด้วยไลบรารี การพึ่งพากัน และไฟล์ทั้งหมดที่คอนเทนเนอร์จำเป็นต้องเรียกใช้ Docker Image สามารถแชร์และพกพาได้ คุณจึงปรับใช้ Image เดียวกันในหลายตำแหน่งพร้อมกันได้ – เช่นเดียวกับไฟล์ไบนารีของซอฟต์แวร์
คุณสามารถเก็บ Image ในรีจิสทรีเพื่อติดตามสถาปัตยกรรมซอฟต์แวร์ที่ซับซ้อน โครงการ กลุ่มธุรกิจ และการเข้าถึงกลุ่มผู้ใช้ ตัวอย่างเช่น รีจีสทรี Docker Hub สาธารณะประกอบด้วย Image เช่น ระบบปฏิบัติการ เฟรมเวิร์กภาษาโปรแกรม ฐานข้อมูล และโปรแกรมแก้ไขโค้ด
คำสั่งที่สำคัญ: Docker Image เทียบกับ คอนเทนเนอร์ Docker
คุณใช้คำสั่งพร้อมพารามิเตอร์เพื่อจัดการคอนเทนเนอร์ Docker รูปแบบคำสั่งมาตรฐานคือ docker [options] [command] [arguments]
คำสั่งคอนเทนเนอร์
ตารางต่อไปนี้ประกอบด้วยคำสั่งคอนเทนเนอร์ที่ใช้บ่อย มีอีกหลายรายการในเอกสารประกอบของ Docker
คำสั่ง |
คำอธิบาย |
docker ps -a |
แสดงรายการคอนเทนเนอร์ทั้งหมด แฟล็ก -a แสดงทั้งคอนเทนเนอร์ที่กำลังทำงานและไม่ได้ทำงาน หากต้องการแสดงเฉพาะคอนเทนเนอร์ที่กำลังทำงาน แฟล็กนี้สามารถละเว้นได้ |
docker rename [container] [new_name] |
เปลี่ยนชื่อภาชนะที่กำหนดเป็น new_name |
docker start [container] |
เรียกใช้คอนเทนเนอร์ที่กำหนด |
docker stop [container] |
หยุดภาชนะที่กำหนด |
docker wait [container] |
ทำให้คอนเทนเนอร์ที่กำหนดรอจนกว่าคอนเทนเนอร์ที่กำลังทำงานหยุดทำงาน |
คำสั่ง Image
มีคำสั่ง Image น้อยกว่าเมื่อเทียบกับคำสั่งคอนเทนเนอร์
Docker build -t image_name . |
สร้างภาพ Docker Image แท็ก image_name จากไฟล์ในไดเรกทอรีปัจจุบัน |
docker create [image] |
สร้างคอนเทนเนอร์ที่ไม่ได้ทำงานจาก Image ที่กำหนด |
docker run [image] |
สร้างและเรียกใช้คอนเทนเนอร์ตาม Image ที่กำหนด |
การสร้างคอนเทนเนอร์ Docker จาก Docker Image
หากต้องการสร้างคอนเทนเนอร์จาก Docker Image เฉพาะ ให้เริ่มเครื่องมือบนเครื่อง จากนั้นใช้คำสั่งเรียกใช้ Docker พื้นฐาน
นี่คือตัวอย่างคำสั่ง:
docker run -it MyImage bash
คำสั่งนี้สร้างคอนเทนเนอร์จากไฟล์ Image ชื่อ MyImage -it สร้างเทอร์มินัลหลอกภายในคอนเทนเนอร์ที่กำลังทำงาน และด้วยการระบุ Bash เป็นคำสั่ง เทอร์มินัล Bash จะเปิดขึ้นภายในคอนเทนเนอร์
ความแตกต่างที่สำคัญ: Docker Image เทียบกับ คอนเทนเนอร์ Docker
คอนเทนเนอร์ Docker เป็นแอปพลิเคชันซอฟต์แวร์หรือบริการที่ทำงานได้ในตัว ในทางกลับกัน Docker Image คือเทมเพลตที่โหลดลงในคอนเทนเนอร์เพื่อทำงาน เหมือนกับชุดคำสั่ง
คุณเก็บ Image เพื่อแชร์และนำมาใช้ใหม่ แต่คุณสร้างและทำลายคอนเทนเนอร์ตลอดวงจรชีวิตของแอปพลิเคชัน และเรามีความแตกต่างเพิ่มเติมดังต่อไปนี้
ต้นทาง
คุณสร้าง Docker Image จาก Dockerfile ซึ่งเป็นไฟล์ข้อความที่มนุษย์อ่านได้ซึ่งคล้ายกับไฟล์การกำหนดค่า Dockerfile มีคำแนะนำทั้งหมดในการสร้าง Image คุณต้องวาง Dockerfile พร้อมกับไลบรารีและการอ้างอิงที่เกี่ยวข้องทั้งหมดในโฟลเดอร์เพื่อสร้าง Image
ในทางตรงกันข้าม คุณสร้างคอนเทนเนอร์ Docker โดยตรงจากไฟล์ Docker Image
องค์ประกอบ
ไฟล์ Docker Image ประกอบด้วยเลเยอร์ Image เพื่อให้ไฟล์มีขนาดเล็ก แต่ละเลเยอร์แสดงถึงการเปลี่ยนแปลงที่เกิดขึ้นกับ Image เลเยอร์เป็นแบบอ่านอย่างเดียวและสามารถใช้ร่วมกันระหว่างหลายคอนเทนเนอร์
คอนเทนเนอร์ Docker ซึ่งเป็นอินสแตนซ์ Image ยังมีเลเยอร์ อย่างไรก็ตาม มีเลเยอร์เพิ่มเติมที่สามารถเขียนได้ ซึ่งเรียกว่าเลเยอร์คอนเทนเนอร์ อยู่ด้านบน เลเยอร์คอนเทนเนอร์อนุญาตให้เข้าถึงแบบอ่าน-เขียน นอกจากนี้ยังทำให้การเปลี่ยนแปลงใดๆ ที่เกิดขึ้นภายในคอนเทนเนอร์ถูกแยกออกจากคอนเทนเนอร์อื่นๆ ตาม Image เดียวกัน
ความไม่แน่นอน
Docker Image นั้นแน่นอน ซึ่งหมายความว่าไม่สามารถแก้ไขได้เมื่อสร้างแล้ว หากจำเป็นต้องทำการเปลี่ยนแปลงกับ Image คุณต้องสร้าง Image ใหม่พร้อมการแก้ไขที่ต้องการ
ในทางตรงกันข้าม คอนเทนเนอร์นั้นไม่แน่นอนและอนุญาตให้แก้ไขระหว่างรันไทม์ การเปลี่ยนแปลงที่เกิดขึ้นภายในคอนเทนเนอร์จะถูกแยกออกจากคอนเทนเนอร์นั้นๆ และไม่ส่งผลต่อ Image ที่เกี่ยวข้อง ตัวอย่างของการเปลี่ยนแปลง เช่น เมื่อคุณเขียนไฟล์ใหม่ ติดตั้งซอฟต์แวร์ หรือปรับเปลี่ยนการกำหนดค่า
เมื่อใดควรใช้: Docker Image เทียบกับ คอนเทนเนอร์ Docker
คุณสามารถใช้ Docker Image และคอนเทนเนอร์ร่วมกันเมื่อคุณสร้างและปรับใช้ซอฟต์แวร์
คุณใช้คอนเทนเนอร์เพื่อสร้างแอปพลิเคชันเพียงครั้งเดียวและทำงานได้ทุกที่ คุณสามารถเริ่ม หยุด และรีสตาร์ทคอนเทนเนอร์ได้อย่างรวดเร็วตามต้องการ ดังนั้นจึงเป็นเรื่องง่ายที่จะปรับขนาดขึ้นหรือลงตามความต้องการของแอปพลิเคชัน
ดังที่ได้กล่าวไปแล้ว การจัดการจะง่ายขึ้นเมื่อคุณใช้ทั้ง Image และคอนเทนเนอร์ ตัวอย่างเช่น นี่คือวิธีที่คุณสามารถใช้ร่วมกัน:
- ปรับขนาดแอปพลิเคชันของคุณในแนวนอนโดยเรียกใช้คอนเทนเนอร์หลายอินสแตนซ์ตาม Image เดียวกัน
- ทำให้ไปป์ไลน์การรวมและการปรับใช้อย่างต่อเนื่อง (CI/CD) เป็นอัตโนมัติโดยใช้ Image ที่แตกต่างกันสำหรับสภาพแวดล้อมการพัฒนา การทดสอบ และการผลิต
- แท็กและจัดการ Image ของคุณในเวอร์ชันต่างๆ สิ่งนี้ช่วยให้คุณย้อนกลับหรือปรับใช้เวอร์ชันเฉพาะได้ตามต้องการ
สรุปความแตกต่าง: Docker Image เทียบกับ คอนเทนเนอร์ Docker
Docker Image |
คอนเทนเนอร์ Docker |
|
คืออะไร |
ไฟล์ที่ใช้ซ้ำได้และแชร์ได้ซึ่งใช้สร้างคอนเทนเนอร์ |
อินสแตนซ์รันไทม์ ซอฟต์แวร์ที่มีในตัวเอง |
สร้างจาก |
รหัสซอฟต์แวร์ การพึ่งพากัน ไลบรารี และไฟล์ Docker |
Image หนึ่ง |
องค์ประกอบ |
เลเยอร์แบบอ่านอย่างเดียว |
เลเยอร์แบบอ่านอย่างเดียวที่มีเลเยอร์อ่าน-เขียนเพิ่มเติมอยู่ด้านบน |
ความไม่แน่นอน |
แน่นอน หากมีการเปลี่ยนแปลง คุณต้องสร้างไฟล์ใหม่ |
ไม่แน่นอน; คุณสามารถเปลี่ยนตามรันไทม์ได้ตามต้องการ |
เมื่อใดควรใช้ |
เพื่อเก็บรายละเอียดการกำหนดค่าแอปพลิเคชันเป็นเทมเพลต |
เพื่อเรียกใช้แอปพลิเคชัน |
AWS สามารถช่วยเกี่ยวกับข้อกำหนดด้านคอนเทนเนอร์และ Image ของคุณได้อย่างไร
Amazon Web Services (AWS) มีข้อเสนอมากมายที่ให้สถานที่ที่ปลอดภัยกับคุณในการเก็บและจัดการ Image คอนเทนเนอร์ของคุณ
เรานำเสนอการควบคุมระบบที่จัดการเวลาและสถานที่ที่คอนเทนเนอร์ของคุณทำงาน และเครื่องมือคำนวณที่ยืดหยุ่นซึ่งขับเคลื่อนคอนเทนเนอร์ของคุณ AWS สามารถช่วยจัดการคอนเทนเนอร์และการนำไปใช้จริงให้กับคุณ ดังนั้นคุณจึงไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐาน สำหรับข้อมูลเพิ่มเติม ไปที่ คอนเทนเนอร์บน AWS
Amazon Elastic Container Registry (Amazon ECR) เป็นทะเบียนคอนเทนเนอร์ที่มีการจัดการอย่างเต็มที่ นำเสนอการโฮสต์ที่มีประสิทธิภาพสูง ดังนั้นคุณจึงสามารถปรับใช้ Image แอปพลิเคชันและอาร์ทิแฟกต์ได้อย่างน่าเชื่อถือในทุกที่ นักพัฒนาที่สร้างแอปพลิเคชันเกี่ยวกับคอนเทนเนอร์ในขณะนี้ค้นพบและดาวน์โหลด Docker Image อย่างเป็นทางการได้โดยตรงจาก Amazon ECR Public
Amazon Elastic Container Service (Amazon ECS) คือบริการการควบคุมระบบคอนเทนเนอร์ที่มีการจัดการเต็มรูปแบบ ซึ่งจะทำให้คุณปรับใช้ จัดการ และปรับขนาดแอปพลิเคชันที่มีคอนเทนเนอร์ Amazon ECS ใช้ Docker Image ในคำนิยามของงานเพื่อใช้งานคอนเทนเนอร์
เริ่มต้นใช้งาน Docker บน AWS โดยสร้างบัญชีวันนี้