ใน Windows Server 2016 ทาง Microsoft ได้เพิ่ม Feature ใหม่เข้ามานั่นคือ Containers ผมจะขอพาไปทำความรู้จักกับ Feature นี้กัน
- Containers คืออะไร
Containers คือ Virtualization Technology
- Virtual Machine ก็เป็น Virtualization Technology แล้วทั้ง 2 อย่างนี้ต่างกันอย่างไร
Virtual Machine คือ การจำลอง hardware ให้ Operating System ใช้งาน เทคโนโลยีของ Microsoft ที่สร้าง Virtual Machine ขึ้นมา คือ Hyper-V
Containers คือ การจำลอง Operating System ให้ Application ใช้งาน ซึ่งเป็นการสร้าง Kernel เสมือน / Binary เสมือน / Library เสมือน ขึ้นมา ฉะนั้น Containers จึงแบ่งได้เป็น 2 ประเภทคือ Linux Containers และ Windows Containers ตาม Operation System platform ที่ application สามารถทำงานได้
ที่มา : https://sec.ch9.ms/ch9/6df4/5ea8a5f6-3953-4bf7-94a5-07459a456df4/OEMTVContainersPrt2_960.jpg
เราสามารถแบ่ง Windows Containers ได้เป็น 2 ประเภท คือ
1. Windows Server containers คือ Windows Server ที่มีการติดตั้ง Containers Feature และ Containers ทุกตัวทำงานอยู่บน Windows Server โดย ทุก Containers จะใช้ kernel ของ Windows Server ร่วมกัน
2. Hyper-V Container คือ Hyper-V VM ที่มี Container Feature ติดตั้งอยู่ โดย Container จะใช้ kernel ร่วมกันกับ Windows Server ที่ทำงานอยู่บน Hyper-V VM นั้น
ในกรณีที่ Host ของ Hyper-V VM เป็น Virtual Machine จะต้องทำการ Configure Nested Virtualization (VM ซ้อน VM) ด้วย ภาพด้านล่างนี้แสดง Windows containers แต่ละประเภท
- แล้วเราจะใช้งาน Containers ได้อย่างไร
Containers จะสามารถทำงานก็ต่อเมื่อถูก deploy มาจาก image file ลงบน Container host
Container host คือ Host ที่เป็น Physical หรือ Virtual Machine ที่มีการติดตั้ง Windows Container feature
- แล้วเราจะ Deploy image file ไปบน Container host ได้อย่างไร, image file หาได้จากไหน
เครื่องมือที่ใช้ในการจัดการ คือ Docker
ที่มา : https://blog.docker.com/2016/09/docker-microsoft-partnership/
Docker มีระบบ Registry ที่ชื่อว่า Docker hub ที่จะเปิดให้ download หรือ upload images ได้ผ่าน internet
Microsoft ก็ได้จัด official images ไว้บน Docker hub เช่นกัน
ที่มา : https://hub.docker.com/u/microsoft/
- อยากเริ่มใช้งาน Containers จะต้องทำอย่างไร
จากนี้ไปจะเป็นขั้นตอนการติดตั้งและตั้งค่า Windows Server 2016 ให้ใช้งาน Containers
Prerequisites
1. Physical หรือ Virtual Machine ที่ติดตั้ง Windows Server 2016 (Update ล่าสุด)
Physical หรือ Virtual Machine สามารถเชื่อมต่อ Internet ได้
เริ่มกันเลย
1. ติดตั้ง Docker และ enable Containers Feature
– ขั้นแรกติดตั้ง Docker-Microsoft PackageManagement Provider จาก Repository PowerShell Gallery
ขั้นตอนนี้จะทำให้สามารถใช้สั่ง Docker โดยใช้ PowerShell ได้
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
– ใช้ PackageManagement PowerShell module สั่งติดตั้ง Docker เวอร์ชั่นล่าสุด
ขั้นตอนนี้ Server จะทำการ Download และติดตั้ง Docker Engine กับ Docker Client แล้วทำการ Enable Containers Feature จากนั้นจะต้อง Restart Server
2. ทดสอบ Deploy Container
มาถึงจุดนี้ Server ของเราก็พร้อมให้ Container ทำงานแล้ว
ลองตรวจสอบดูหน่อยว่ามี Container ทำงานอยู่บน server เราไหม ใช้คำสั่ง
docker ps -a
Server เรามี image สำหรับ deploy หรือไม่ ใช้คำสั่ง
docker images
Download image มาซักไฟล์ โดยการทดลอง download .Net core application มาจาก docker hub
ใช้คำสั่ง
docker pull microsoft/dotnet-samples:dotnetapp-nanoserver
Deploy Container
docker run microsoft/dotnet-samples:dotnetapp-nanoserver
ตรวจสอบว่าในเครื่องมี Container ทำงานไปแล้วใช่ไหรือไม่
หากต้องการลบ Container ออกจาก Server ใช้คำสั่ง
docker rm <Container name>
เป็นไงกันบ้างครับ จากบทความนี้ผมหวังว่าจะทำให้เข้าใจเรื่อง Container บางนะครับ
Reference : https://docs.microsoft.com/th-th/virtualization/windowscontainers/