Uncategorized

รำวง Docker

เมื่อวันเสาร์ได้มีโอกาสมาเรียนรู้เรื่อง Docker ที่จัดแบบเหมารอบรำวงโดย Jirayut Nimsaeng

งานนี้เรียกว่าครบเครื่องทั้งบู๊ทั้งบุ๋น เดียร์ ออกแบบ Course นี้ได้ดีมากเรียกได้ว่ากลมกล่อม หอมชวนชิมเลยหล่ะ ทำให้การสอนดูค่อนข้างไหลลื่นและทำให้คนเรียนเห็นภาพได้ง่ายมาก แถมยังใส่เรื่อง Best Practice ต่างๆ และประสบการณ์ตรงในการใช้ลงมาด้วย … แจ่มจริงครับ

ขณะที่ผมพิมพ์นี้ผมรู้สึกได้ว่า Docker มันง่ายมากๆ แต่ตอนก่อนหน้านี้ไม่ได้รู้สึกอย่างนั้น เพราะไม่ค่อยได้มีเวลาไปจับมันอย่างจริงจัง รวมถึงไม่ค่อยได้อ่านอ่านหนังสือเกี่ยวกับมันเท่าไหร่ พอเดียร์อธิบายให้เห็นภาพรวมถึงพาทำไปด้วยกัน…. ง่ายขึ้นมาทันทีเลย 555

Docker เป็น VM ที่เปรียบตัวเองเหมือน Container เราอยากจะได้ Process อะไรก็เอามันมาเรียงร้อยต่อกันเป็นสิ่งที่เราต้องการ เช่น เราต้องการทำ infrastructure ของ web app สักตัว เราก็ต้องมี VM ที่มี ubuntu + nginx + webapp + postgresql อะไรจำพวกนี้ ซึ่งบางทีเราก็อยากจะทดสอบกับ postgresql version 8 และ postgresql version 9 รวมถึง webapp 4.3 กับ webapp 5.5 เราก็ต้องใช้ VM ถึง 4 ตัว

VM1 : ubuntu 14.04 + nginx 1.6 + postgresql 8.4 + webapp 4.3
VM2 : ubuntu 14.04 + nginx 1.6 + postgresql 8.4 + webapp 5.5
VM3 : ubuntu 14.04 + nginx 1.6 + postgresql 9.3 + webapp 4.3
VM4 : ubuntu 14.04 + nginx 1.6 + postgresql 9.3 + webapp 5.5

ซึ่งนั่นหมายความว่า เราต้องเสียทรัพยากรณ์ของเครื่องไปกับ ubuntu 14.04 กับ nginx 1.6 ไปเยอะ (ตั้ง 4 ชุด ทั้งๆ ที่ VM ทุกตัวใช้ไอ้เจ้านี้เหมือนๆ กัน)

Docker จัดการปัญหานี้ได้ดี โดยที่มันจะแยก image ของ process เหล่านี้ออกมา เป็น ชุด โดยกรณีอย่างข้างบนนั้น เราก็ใช้ ubuntu 14.04 กับ nginx 1.6 แค่ container เดียวเท่านั้น ส่วน postgresql ก็ใช้ 2 container และ webapp 2 container

ประสิทธิภาพของมันก็เรียกว่าแทบจะเทียบเท่า native

 

Docker support app บน Linux ส่วนชาว Mac และ Windows ก็อดไป แต่ถ้าอยากจะเล่น Docker ก็ใช้ผ่าน virtualbox ได้ง่ายๆ โดยมี Boot2Docker เป็นตัวช่วย

boot2docker  init
boot2docker  up
boot2docker  ssh

คือคำสั่งง่ายๆ …​ แค่นี้เราก็ใช้ docker ได้แล้ว จริงๆ นะ

แล้วเราก็สามารถ pull image ที่เราต้องการได้จาก dockerhub ด้วยคำสั่ง

docker pull ubuntu:14.04

แค่นี้เราก็มี ubuntu image version 14.04 มาใช้แล้ว ถ้าอยากได้  version อื่นๆ และ version ล่าสุดก็สั่งแค่

docker pull ubuntu

เท่านี้ก็ได้

การที่เราไม่ได้ระบุ TAG ( ไอ้ :14.04 นั่นแหล่ะ ) มันก็จะหมายถึง tag latest  ลองสั่ง

docker images

ดูได้

ถ้าเราอยาก ลองใช้ ก็ลองเอา image มา run เป็น container โดยใช้คำสั่ง

docker  run  ubuntu  echo “hello world”

มันก็จะเอา image ubuntu:latest มาสร้าง container แล้วก็ run process  echo “hello world” เราก็จะได้ผลลัพธ์ ออกมาดังนี้

hello world

เราสามารถดูสถานะของ containers ที่เราได้สั่งมันทำงานไปแล้วได้ด้วยคำสั่ง

docker ps -a

เราสามารถสร้าง image ของเราเองจาก container 

docker commit [cid]  ubuntu-ssh

เราก็จะได้ image ชื่อ ubuntu-ssh จาก container ที่มี container id ตามที่ระบุ

อ้อ อยากจะลองไปพิมพ์ bash command เล่นๆ เพื่อทำ trouble shooting ก็สามารถใช้

docker  run -i -t  ubuntu:14.04  /bin/bash

 

 

อันนี้เป็นเบื้องต้นมากๆ เดี๋ยวมีเวลาจะมาเหลาต่อละเอียดๆ 🙂

 

 

 

 

Leave a comment