Windows Containter 2: วิธีสร้าง Windows Container step-by-step

ใน part 1 เราได้รู้จักของ Container กันมาแล้ว คราวนี้เราจะลงมือสร้าง Windows Container กัน ขั้นตอนไม่ยากมี 4 ขั้นตอนหลัก เน้นทำตามภาพประกอบ ดังนี้

  • Download Windows Server 2016
  • ติดตั้ง Windows Server 2016 ลงบน VM โดยลงเป็น Server Core
  • Enable Feature Container
  • Download base image ของ Windows Server Core

เรามาลงมือทำกันเลย!!

  1. Download Windows Server 2016 กดที่นี่ ให้เลือก Windows Server 2016 อันนี้เป็น Evaluation จะใช้ได้ 180 วัน โดยเราต้องลงทะเบียนเพื่อ download
  2. Container เป็น Feature บน Windows Server ดังนั้น เราต้องสร้าง Windows Server ขึ้นมาก่อน แนะนำให้สร้างเป็น VM โดยเราจะใช้ Hyper-V, VMware, Oracle VM หรืออะไรที่สะดวกก็ได้ ในกรณีของผม ใช้ Oracle VM เลือก Guest เป็น Windows 10 มี Minimum hardware Requirement ที่แบ่งให้ VM ตามนี้
CPU 1 core
RAM 1 GB
Disk 25 GB
Network Card Wifi หรือ สาย LAN ก็ได้

เครื่องต้องต่อกับ Internet

3.  ลง Windows ตามภาพ

– เริ่มลง Windows

1

 

– กด Next2

 

– กด Install Now

3

– หน้านี้ เนื่องจาก Evaluation เราไม่มี Product Key ก็ไม่ต้องใส่ กดตามภาพ

4

 

– เลือก Windows Server 2016 Standard Technical Preview 5 (Desktop Experience)

5

 

6

 

7

 

8

ขั้นตอนนี้ก็ปล่อยให้มันลงจนจบ

4. สร้าง Password ของ Administrator

เมื่อลง Windows เสร็จแล้วจะได้จอนี้ ก็กด Ctrl+Alt+Del เพื่อ Logon เข้า Windows เราจะใช้ Script Powershell นี้เพื่อความสะดวกในการสร้าง Container

# This script is from MSDN
Install-WindowsFeatures Containers
#Download docker service and client
Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip" -OutFile "$env:TEMP\docker-1.12.1.zip" -UseBasicParsing
# Put docker to \Program Files\docker
Expand-Archive -Path "$env:TEMP\docker-1.12.1.zip" -DestinationPath $env:ProgramFiles
$env:path += ";c:\program files\docker"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
& $env:ProgramFiles\docker\dockerd.exe --register-service
Start-Service docker

 

ทำตาม step ในภาพ

step powershell

 

 

ถึงตอนนี้ เราสร้างเครื่อง Windows Container พร้อมกับติดตั้ง base image ของ Windows Server Core เสร็จแล้ว

5.  ทดลองเปิด Windows Container เพื่อทดสอบว่า docker ใช้งานได้แล้ว

– ทำตามภาพเลย คำสั่ง docker ps –a เพื่อดูว่ามี image run อยู่หรือไม่ สังเกตุตรง column “status”

– ให้สังเกตุตรง hostname ว่าตัว host ของ container มีชื่ออะไร เมื่อเรา run image จะเห็นมันเป็นคนละเครื่องกัน

22

-อธิบายคำสั่ง

docker ps -a เพื่อขอดูว่ามี container อะไรกำลัง run อยู่ โดยเราเพิ่ม parameter -a ไปด้วยเพื่อให้แสดงทั้งที่ run และ stop ไปแล้ว

docker run -it –name myCore <image ID> <คำสั่งที่การ run ใน container> อันนี้เราให้ docker start container ขึ้นมา run โดยใช้ image windowsservercore แต่แทนที่จะเรียกชื่อ เราใช้ Image ID แทน

  • ตอนนี้เราอยู่ใน container แล้ว คำสั่ง hostname จะแสดงว่ามันเป็นคนละชื่อกัน

23

– กด Ctrl+P+Q เพื่อกลับไปที่ host ใช้คำสั่ง docker ps –a จะเป็นว่า status เครื่อง container ของเรากำลัง run อยู่

24

– เราปิดเครื่อง และขอจบตอนนี้ตรงนี้

25

สรุป

เราได้สร้างเครื่อง Windows Container ขึ้นมาแล้ว และทดลอง run image ตอนต่อไปจะเป็นการใช้งาน Windows Container

Advertisement

Windows Container 1: ยกระดับ Virtual Server Admin ให้ใช้งาน Container Technology ด้วยการเรียนรู้ Docker และ Windows Container

ก่อนจะมาเป็น Container บน Linux หรือ Windows

เมื่อเรียก Container ขอให้นึกถึงตู้ Shipping Container ที่ใช้บรรจุสินค้าสำหรับขนส่ง คุณสมบัติของมันคือ

1. บรรจุสินค้าลงในตู้ แต่ละตู้มีของต่างๆ ของกิน ของใช้ ตู้ใครตู้มัน มันมีความเป็นส่วนตัวหรือ Isolation

2. การขนส่งมีตู้เยอะแยะถูกนำไปใส่ในเรือลำเดียวกันหรือ Share กัน

3. ผู้ฝากส่งสินค้า มีหน้าเพียงบรรจุสินค้าลงตู้ แล้วบอกว่าจะส่งไปไหน

4. เจ้าของเรือ บริหารการใช้ทรัพยากร บนเรือ

clip_image002

(ภาพนี้เป็นของสายการเดินเรือ Mitsui O.S.K.Lines จาก http://www.mol.co.jp/en/services/container/img/ph-01.jpg)

เมื่อกลับมาเรื่อง Linux หรือ Windows ถ้ามันมาทำหน้าที่เป็น “เจ้าของเรือ” มีหน้าเตรียม Resource ให้ผู้ใช้นำงานมาใส่ใน Container สิ่งของนั้นก็คือ Application นั่นเอง

รู้จักจุดร่วมและจุดต่างของ Container กับ Virtualization

เรารู้จักว่า Server virtualization เช่น Hyper-V ที่เป็นการ Share Hardware ด้วยการสร้าง Virtual Machine เมื่อมายุคของ Container มัน Share กันคนละแบบ ดูภาพด้านล่าง พอสรุปง่ายๆ ได้ดังนี้

Server Virtualization – เจ้าของ Server จะแบ่ง CPU, RAM, Disk และ Network ให้ Virtual Machine

– ผู้ใช้ Virtual Machine ต้องไปลง Operating System

Container – เจ้าของ Server จะลงเตรียม OS (Windows/Linux) ไว้ ผู้ใช้งาน Container ใช้ OS share กับ Host

– ผู้ใช้ต้องเลือกว่าเจ้าของ Server คนไหนมี OS Version ที่ต้องการ ก็ไปขอใช้บริการ Container เจ้านั้น

– ในภาพด้านล่างซ้ายมือคือ Server Virtualization ปกติ และขวามือคือ Container ในภาพเป็นตัวอย่าง Software ที่จัดการ Container ตัวหนึ่งที่ได้รับความนิยมมากชื่อ Docker ในภาพมันทำงานบน Linux ที่ฐานของ Docker เราเห็นว่ามันคือ Linux  ด้านล่างที่เป็น Hardware ยังเลือกได้อีกว่าจะใช้ Virtual หรือ Physical ได้ด้วย

image

ความเป็นมาของ Container

ปกติ vm360degree มักจะพูดถึงเทคโนโลยีของ Microsoft แต่พอเป็นเรื่อง Container มันเกิดจาก Linux ขอสรุปเหตการณ์สำคัญในตารางด้านล่าง ซึ่งทำให้เห็นพัฒนาการอย่างต่อเนื่องของ Container ว่ามีกันมานานหลายตัวแล้วบน Linux จนมีความสมบูรณ์เลยทีเดียว รวมถึงตัวหนึ่งในนั้นคือ Docker ก็ได้รับความนิยมเป็นอย่างมาก Docker เกิดขึ้นในปี 2013 จนปัจจุบัน Cloud Service Provider อย่าง Amazon EC2, Microsoft Azure ก็ใช้งาน Docker ได้ การเล่าเรื่อง Container ตั้งแต่นี้จะเป็นเรื่อง Docker

ปี เหตุการณ์
2000 ก้าวแรกของ Container – FreeBSD Jailed ได้ติดตั้งบน FreeBSD
2001 มีการสร้าง Container บน Linux ใน VServer project เป็นครั้งแรกบน Linux ที่แยก Container เป็น unit (Virtual Private Server) แต่ละ unit จะคิดว่ามันมีเครื่อง server เป็นของมันเอง
2004 เกิด Solaris Zone
2005 เกิด Open Virtuzzo (OpenVZ)
2006 –   Cpuset
–   เปลี่ยนชื่อ control groups หรือ cgroups
–   Kernal namespaces, user namespaces
2008 Linux Container Project (LXC)
2013 Docker (dotCloud) release เป็น March 2013
2014 Release of LXC

Security SELinux and Seccomp

Docker ใช้ libcontainer ด้วยภาษา Go แทน LXC

2015 ได้มีการประกาศว่า Docker ได้รับการสนับจาก RedHat, IBM, Google, Cisco System และ Amadeus IT Group
2016 Microsoft ใส่ Container ใน Windows Server 2016

 

Container ไม่เหมือน Virtual Machine – ปรับความคิดก่อนใช้งาน

กฏข้อแรกข้อเดียวของ vm360degree สำหรับ Container คือ คุณไม่สามารถนำความรู้ของ Virtualization มาใช้กับ Container มันไม่เกี่ยวกัน ถ้าถามผมว่า Container ใช้ทำอะไร ผมก็ตอบไม่ได้ แต่เมื่อคุณใช้ไปสักระยะก็จะได้คำตอบไปพร้อมๆ กัน  เรามาค้นคว้าหาคำตอบไปด้วยกัน ผ่านประสบการณ์ ในการดูแลระบบของเรา ตามขั้นตอนการทำงานหรือ Use Case ต่อไปนี้

1. สร้าง Container พื้นฐาน บน Amazon AWS

2. ติดตั้ง Application บน Container, การจัดการ image, สร้าง docker file

3. จัดการ Resource เช่น network, RAM, CPU

4. เรียนรู้ Windows Container

5. Container กับ DevOps

Reference

http://rhelblog.redhat.com/2015/08/28/the-history-of-containers/

http://www.slideshare.net/jpetazzo/anatomy-of-a-container-namespaces-cgroups-some-filesystem-magic-linuxcon