Docker Images และคอนเทนเนอร์แตกต่างกันอย่างไร

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

อ่านเกี่ยวกับ Docker »

เหตุใดจึงใช้ Image และคอนเทนเนอร์ Docker

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

การทำให้เป็นคอนเทนเนอร์ทำให้แอปพลิเคชันซอฟต์แวร์ทำงานเป็นไมโครเซอร์วิสในสถาปัตยกรรมฮาร์ดแวร์แบบกระจายและข้ามแพลตฟอร์ม เนื่องจากคอนเทนเนอร์สามารถพกพาได้สูง แอปพลิเคชันซอฟต์แวร์เหล่านี้จึงทำงานบนเครื่องเกือบทุกชนิดพร้อมการปรับใช้ที่รวดเร็ว ตัวอย่างเช่น แอปพลิเคชันขององค์กรอาจมีไมโครเซอร์วิสหลายร้อยรายการ พวกเขาสามารถทำงานเป็นคอนเทนเนอร์ในเครื่องและ Virtual Machine (VM) หลายเครื่องในศูนย์ข้อมูลและระบบคลาวด์เฉพาะ

วิธีการทำงาน: Docker Image เทียบกับ คอนเทนเนอร์ Docker

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

อ่านบทความเกี่ยวกับ Containerization »

คอนเทนเนอร์ Docker ทำงานอย่างไร

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

ในการปรับใช้และปรับขนาดชุดของคอนเทนเนอร์เพื่อสื่อสารอย่างมีประสิทธิภาพระหว่างเครื่องต่างๆ หรือเครื่องเสมือน คุณต้องมีแพลตฟอร์มการควบคุมระบบคอนเทนเนอร์ เช่น Kubernetes สิ่งนี้ช่วยได้ไม่ว่าเครื่องของคุณจะอยู่ในองค์กรหรือในระบบคลาวด์ 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 โดยสร้างบัญชีวันนี้

ขั้นตอนถัดไปกับ AWS