Difference between revisions of "Docker"

From CMU ITSC Network
Line 3: Line 3:
 
* '''Docker''' เป็น engine ในการจัดการ Software Container ที่ใช้งานได้ง่าย ไม่ซับซ้อน เป็นที่แพร่หลาย
 
* '''Docker''' เป็น engine ในการจัดการ Software Container ที่ใช้งานได้ง่าย ไม่ซับซ้อน เป็นที่แพร่หลาย
 
* Container VS VM<br>[[File:Docker-containerized-and-vm-transparent-bg.png|link=]]<br>*image from https://www.docker.com
 
* Container VS VM<br>[[File:Docker-containerized-and-vm-transparent-bg.png|link=]]<br>*image from https://www.docker.com
 +
 +
== ปัญหาที่เจอบ่อย ==
 +
* ต้องติดตั้ง ตั้งค่า server ที่จะรัน Application
 +
* ไม่สามารถติดตั้งหรืออัพเกรด Library บางอย่างบน OS ได้เนื่องจากกระทบกับ Application อื่น
 +
* เครื่อง Dev กับ Production ไม่เหมือนกัน
  
 
== Docker Architecture ==
 
== 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'''
 +
[[File:Docker-image-container.png|link=]]

Revision as of 08:18, 7 March 2019

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