Docker Linux Container เล็ก บาง เบา

เมื่ออาทิตย์ที่แล้วเข้าไปใช้งาน dotCloud พบว่า มีการเปิดตัว Docker.io เท่าที่ดูเหมือน dotCloud จะค่อยๆ ปล่อยของเล่นส่วนตัวออกมาเรื่อยๆ เช่น Hipache เป็นต้น Docker พัฒนาจาก LXC เป็น Linux Container ตัวที่เล็กและเบา จุดเด่นของ Docker คือสามารถทำงานในระดับ process ได้ แยก process โดยใช้ namespace ทำให้คุณสามารถเอาไปประกอบ (ไม่ใช่เอามาใช้แล้วจะกลายเป็น dotCloud นะจ๊ะ) เป็น PaaS ได้ง่ายอย่าง dotCloud เป็นต้น ใครงงๆ ก็ดู รายละเอียดจาก Slideshare ข้างล่าง หรือใครอยากอ่านแบบยาวๆ ก็อ่านเรื่องราว ได้ครับ

Docker ใจดีนอกจากจะมีเครื่องมืออย่าง Linux Container มาให้ใช้ ยังมี API และ Image Repository ที่ชื่อ Docker Index มาให้ใช้ด้วย ซึ่ง Docker Index สามารถดึงเอา Container Image มาใช้ได้ และยังสามารถแชร์ Container ของคุณได้ด้วย น่าสนุกมั๊ย สำหรับท่านที่สนใจลองดูตามลิงค์ข้างล่างครับ

Jaff Lindsay เอา Docker ไปใช้งานในการทำ PaaS ขนาดเล็ก ในโครงการ Dokku ซึ่งจำลอง Heroku ขึ้นมา สามารถทำงานได้ทั้ง 3 Platform คือ Ruby, Java และ Node.js เพิ่มเติมโครงการ Maestro อีกหน่อย อันนี้เป็น Orchestration Tool สำหรับ Docker สามารถสร้าง Container จาก YAML ได้ คล้ายๆ กับการใช้ dotcloud.yaml เลยล่ะ
 

มาใช้งาน dotCloud กัน

dotCloud เป็น Platform as a Services (PaaS) ซึ่งให้บริการ Application Stack ที่หลากหลายไม่ว่าเป็น Java, PHP, Python, Ruby อีกทั้งยังสนับสนุน Database อีกหลายตัว เช่น MySQL, MongoDB, PostgreSQL เป็นต้น สำหรับการใช้งานมีเครื่องมือ CLI ที่รองรับทั้ง Windows, Linux และ Mac

สำหรับวิธีการใช้งานก็ง่ายมาก ขั้นตอนมีดังนี้

  • สมัครสมาชิก dotCloud
  • ติดตั้ง Command Line Interface Client (CLI)
  • สร้าง App จาก CLI กำหนด platform ที่จะใช้ เช่น static html, php, ruby ฯลฯ
  • สั่ง Push Application ขึ้นไปที่ dotCloud

มาลองสร้าง PHP App กันดูครับ ให้คุณสมัครสมาชิกกับ dotCloud ให้เรียบร้อย จากนั้นเริ่มติดตั้ง CLI กันได้เลย ให้ติดตั้ง easy_install กันก่อน ดังนี้
sudo apt-get install python-setuptools
จากนั้นสั่งติดตั้ง CLI ดังนี้
sudo easy_install pip && sudo pip install dotcloud
เมื่อติดตั้งเสร็จคุณ คุณจะได้ CLI Client สำหรับใช้งานชื่อ dotcloud ให้คุณเรียกใช้คำสั่ง dotcloud ขึ้นมาดังนี้
dotcloud
โปรแกรมจะให้คุณกรอก API Key ให้คุณดู API Key ของคุณที่ http://www.dotcloud.com/account/settings หลังจากตั้งค่า API Key เรียบร้อยแล้ว ให้ลองสร้าง App กันครับ
ให้คุณสร้างไดเรคทอรี่สำหรับ App ของคุณก่อน เช่น hellophp เป็นต้น จากนั้นก็เข้าไปที่ไดเรคทอรีที่คุณสร้าง
mkdir hellophp
cd hellophp
จากนั้นให้คุณสร้างไฟล์ index.php ใส่โค้ดลงไปดังนี้
<?php phpinfo(); ?>
จากนั้นสร้าง Cloud App โดยใช้คำสั่ง
dotcloud create hellophp
จากนั้นสร้างไฟล์ dotcloud.yml (DotCloud Build File) เพื่อบอกให้ dotCloud เตรียม Application Platform ที่เราต้องการ เช่น ตอนนี้เราใช้ PHP ดังนั้น dotCloud จะต้องเตรียม instance ที่ติดตั้ง PHP ให้เรา เขียน DotCloud Build File ได้ดังนี้
www:
type: static
จากนั้นก็สั่งให้เอา App ของเราขึ้น dotCloud โดยใช้คำสั่ง dotcloud push ดังนี้
dotcloud push hellophp
จากนั้น dotCloud ก็จะติดตั้ง platform ที่เราต้องการและ sync ไฟล์ เมื่อ sync ไฟล์เสร็จ dotCloud จะแจ้ง public url ให้เราทราบ ดังนี้
Deployment finished. Your application is available at the following URLs
www: http://hellophp-anoochit.dotcloud.com/
ลองเข้า URL ตามที่ระบบแจ้งมาจะได้ผลลัพท์ดังนี้

ในส่วน Dashboard ของ dotCloud ยังให้ข้อมูลรายละเอียดการใช้งานของ App แต่ละตัวด้วย

สำหรับท่านที่สนใจลองดู Video เพิ่มเติมข้างล่าง สำหรับเอกสารคู่มือการใช้งานและ Tutorial ดูได้ที่หน้าเอกสารของเว็บ dotCloud ครับ