เริ่มต้นเรียนรู้ Containers

0
2021

ใน 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

image

Containers คือ การจำลอง Operating System ให้ Application ใช้งาน ซึ่งเป็นการสร้าง Kernel เสมือน / Binary เสมือน / Library เสมือน ขึ้นมา ฉะนั้น Containers จึงแบ่งได้เป็น 2 ประเภทคือ Linux Containers และ Windows Containers ตาม Operation System platform ที่ application สามารถทำงานได้

image

ที่มา : 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 แต่ละประเภท

image

ที่มา : https://social.technet.microsoft.com/wiki/contents/articles/33664.windows-containers-vs-hyper-v-containers-in-windows-server-2016.aspx

 

  • แล้วเราจะใช้งาน Containers ได้อย่างไร

Containers จะสามารถทำงานก็ต่อเมื่อถูก deploy มาจาก image file ลงบน Container host

Container host คือ Host ที่เป็น Physical หรือ Virtual Machine ที่มีการติดตั้ง Windows Container feature

  • แล้วเราจะ Deploy image file ไปบน Container host ได้อย่างไร, image file หาได้จากไหน

เครื่องมือที่ใช้ในการจัดการ คือ Docker

image

ที่มา : https://blog.docker.com/2016/09/docker-microsoft-partnership/

Docker มีระบบ Registry ที่ชื่อว่า Docker hub ที่จะเปิดให้ download หรือ upload images ได้ผ่าน internet

Microsoft ก็ได้จัด official images ไว้บน Docker hub เช่นกัน

image

ที่มา : 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

image

– ใช้ PackageManagement PowerShell module สั่งติดตั้ง Docker เวอร์ชั่นล่าสุด

ขั้นตอนนี้ Server จะทำการ Download และติดตั้ง Docker Engine กับ Docker Client แล้วทำการ Enable Containers Feature จากนั้นจะต้อง Restart Server

image

image

2. ทดสอบ Deploy Container

มาถึงจุดนี้ Server ของเราก็พร้อมให้ Container ทำงานแล้ว

ลองตรวจสอบดูหน่อยว่ามี Container ทำงานอยู่บน server เราไหม ใช้คำสั่ง

docker ps -a

image

Server เรามี image สำหรับ deploy หรือไม่ ใช้คำสั่ง

docker images

image

Download image มาซักไฟล์ โดยการทดลอง download .Net core application มาจาก docker hub

image

ใช้คำสั่ง

docker pull microsoft/dotnet-samples:dotnetapp-nanoserver

image

Deploy Container

docker run microsoft/dotnet-samples:dotnetapp-nanoserver

image

ตรวจสอบว่าในเครื่องมี Container ทำงานไปแล้วใช่ไหรือไม่

image

หากต้องการลบ Container ออกจาก Server ใช้คำสั่ง

docker rm <Container name>

image

เป็นไงกันบ้างครับ จากบทความนี้ผมหวังว่าจะทำให้เข้าใจเรื่อง Container บางนะครับ

Reference : https://docs.microsoft.com/th-th/virtualization/windowscontainers/