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

*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