Docker

From CMU ITSC Network
Revision as of 08:22, 7 March 2019 by Supawit (talk | contribs)

Docker คืออะไร

  • Software Container เป็นการสร้างสภาพแวดล้อมสำหรับ software โดยแยกออกออกมาเพื่อไม่ให้กวนกับ software อื่น ๆ บนระบบปฏิบัติการเดียวกัน สามารถนำ Container ไปทำงานบนเครื่องไหนก็ได้จะได้ผลเหมือนกัน
  • Docker เป็น engine ในการจัดการ Software Container ที่ใช้งานได้ง่าย ไม่ซับซ้อน เป็นที่แพร่หลาย
  • Container VS VM
    Docker-containerized-and-vm-transparent-bg.png
    *image from https://www.docker.com

ปัญหาที่เจอบ่อย

  • ต้องติดตั้ง ตั้งค่า server ที่จะรัน Application
  • ไม่สามารถติดตั้งหรืออัพเกรด Library บางอย่างบน OS ได้เนื่องจากกระทบกับ Application อื่น
  • เครื่อง Dev กับ Production ไม่เหมือนกัน

Docker Architecture

Docker Engine

  • Docker Client คือพวก CLI ของ Docker ที่ใช้ในการจัดการ
  • Docker Daemon คือ service ของ Docker ที่รันบน Server เราจะเรียก Server นี้ว่า Docker Machine

Docker Hub

  • เป็น Repository หรือเรียกว่า Registry ทำหน้าที่ให้บริการ Docker Image มี Image ของผู้พัฒนาโปรแกรมต่าง ๆ ให้ใช้งาน มีการจัดเก็บ version ของ image อย่างเป็นระบบ มีเอกสารคู่มือการใช้งาน Image

โดยให้บริการที่ https://hub.docker.com ใช้งานได้ฟรี

  • สามารถสร้าง Private Registry บน Server เองได้

Docker Image

  • เป็น Template ที่สร้างขึ้นโดยนักพัฒนาเป็นชุดของ Software/Library สามารถดึง(pull)มาจาก Registry เพื่อใช้งานหรือสร้างขึ้นมาเองได้
  • เป็นไฟล์แบบอ่านอย่างเดียว

Docker Container

  • คือ Image ที่ถูกรันขึ้นมาใช้งาน โดยจะมีสภาพแวดล้อมตาม Image ต้นแบบ
  • ไฟล์หรืออะไรที่ถูกสร้างขึ้นมาใน Container จะหายไปเมื่อมีการลบ Container
  • สามารถการเปลี่ยนแปลงใน Container กลับไปเป็น Image ได้เรียกว่า commit

Docker-image-container.png

Docker Machine