Docker Compose เป็น Orchestration Tool ที่ Docker ออกมาให้ใช้งานกัน ซึ่งใช้วิธีการเดียวกันกับ Fig โดยสามารถสั่ง build, deploy, link และกำหนด volume ผ่าน config แบบ yaml ได้ง่ายๆ ใครที่เคยใช้ Fig อยู่ก็ปรับตัวนิดหน่อยครับ มาลองดูตัวอย่างการใช้งานกันบ้าง ตัวอย่างเป็น python webapp ง่ายๆ เก็บข้อมูลลง redis ดังนี้

สร้าง directory เก็บ webapp นี้ก่อน

mkdir webapp

cd webapp

จากนั้นสร้างไฟล์ app.py


Continue reading

ครั้งที่แล้วพาเล่น Docker Machine ทั่งบน Digital Ocean, Azure และ Rackspace ครั้งนี้จะมาแนะนำ Docker Swarm ตัว Docker Swarm ทำหน้าที่คล้ายกับ etcd ใน CoreOS เพื่อใช้ในการผูก Cluster โดยใช้ Service เป็นหลัก ซึ่ง Docker Hub จะให้บริการ service discovery ให้ ซึ่งผู้ใช้สามารถเรียกใช้ Swarm ได้ผ่าน Docker Image หรือใช้งานร่วมกับ Docker Machine ได้เช่นเดียวกัน 8ครั้งนี้เราจะใช้ Machine กับ Digital Ocean ติดตั้งเครื่องมือที่ต้องใช้กันก่อน

ติดตั้ง Docker Machine ดังนี้

wget https://github.com/docker/machine/releases/download/v0.1.0/docker-machine_linux-amd64 -O /usr/local/bin/docker-machine

จากนั้นขอ UUID ของ Cluster ดังนี้

docker run swarm create


Continue reading

หากคุณใช้งาน Docker อยู่จะทราบว่าเราสามารถใช้ Docker CLI ในการควบคุมเครื่อง Docker Host ที่อยู่อีกเครื่องหนึ่งได้ ผ่านการกำหนดผ่าน ENV ชื่อ DOCKER_HOST ถ้าต้องการใช้เครื่องไหน ก็ต้องเปลี่ยนทุกครั้ง ถ้าคุณใช้ Docker Machine แล้วมีเครื่องอยู่หลายตัว Deploy อยู่บน Cloud Provider หลายค่าย แล้วจำ IP Address และ Port ไม่ได้ก็ยิ่งสร้างความลำบากให้กับชีวิตมากขึ้น

วิธีการง่ายๆ ในการเปลี่ยนเครื่องที่อยากจะใช้งานให้ได้อย่างรวดเร็วมี 2 ทางเลือก

  • ใช้ Swarm
  • ใช้ ENV ของ Docker Machine

Docker Machine มี option ชื่อ env เราสามารถใช้ความสามารถนี้กำหนด ENV ให้กับ Docker CLI ได้ ตอนนี้เรามีเครื่องอยู่ 5 เครื่อง


Continue reading

ใน How-To ครั้งที่แล้ว มาเล่น Golang บน Docker กัน หลังจากที่ได่ทำการสั่ง Build Docker Images แล้วจะพบว่ามีการดาวน์โหลด Base Images จำนวนมากใช้เวลานานและเมื่อทำการ Build เสร็จแล้ว Docker Images นั้นมีขนาดใหญ่เกินความจำเป็นใน How-To ครั้งนี้จะเป็นวิธีการสร้าง Docker Images ขนาดเล็กกันเพื่อให้ง่ายต่อการใช้งาน มาเริ่มกันเลย…
ดาวน์โหลดและติดตั้ง Golang ด้วยคำสั่ง

wget https://go.googlecode.com/files/go1.1.2.linux-amd64.tar.gz

sudo tar -C /usr/local -xzf go1.1.2.linux-amd64.tar.gz

sudo echo 'PATH DEFAULT=${PATH}:/usr/local/go/bin' | sudo tee -a /etc/environment


Continue reading

สำหรับผู้ที่ต้องการใช้งานเทมเพลตใหม่ ๆ ที่ไม่มีให้ดาวน์โหลดบน หน้าดาวน์โหลด template เราสามารถสร้าง template เองได้ง่าย ๆ ดังนี้ สำหรับครั้งนี้เรามาลองสร้างเทมเพลต Ubuntu 14.10 Server ตัวใหม่ล่าสุดกัน ก่อนอื่นให้เราดาวน์โหลดและติดตัั้ง Ubuntu 14.10 Server แบบ KVM พร้อม update/upgrade ให้เรียบร้อยก่อน จากนั้นให้ติดตั้ง debootstrap

apt-get install -y debootstrap

1

จากนั้นใช้ debootstrap ดาวน์โหลดคอนฟิกไฟล์และแพ็คเกจทั้งหมดที่จำเป็นลง directory ที่ต้องการ ในที่นี้จะให้ลงใน /tmp/deb

Continue reading

Nginx คือแพ็คเกจที่เใช้ติดตั้งเพื่อที่จำทำให้เครื่อง Server สามารถทำงานเป็นเว็บเซิร์ฟเวอร์ที่กำลังได้รับความนิยมอยู่ในขณะนี้เป็นคู๋แข่งของ Apache ที่หลายคนรู้จักดี ความสามารถของ Nginx สามารถอ่านเพิ่มเติมได้ที่ http://nginx.org/en/ ใน How-To ครั้งนี้จะมาทำการเปิดใช้งานความสามรถหนึ่งของ Nginx กันนั่นก็คือ Nginx Load Balancing
Nginx Load Balancing เป็นวิธีการกระจายภาระการทำงานของเครื่อง Server ที่มีอยู่หลายเครื่องให้ช่วยกันรับภาระการทำงานใน How-To ครั้งนี้จะเป็นการทำงานแบบ Round Robin ซึ่งกำหนดให้มีเครื่อง Server 3 เครื่อง ดังนี้

  • backend1.example.com
  • backend2.example.com
  • backend3.example.com

ติดตั้ง Nginx ด้วยคำสั่ง

sudo apt-get install nginx

ทำการแก้ไขไฟล์ default ใน /etc/nginx/sites-available เพื่อเพิ่มความสามารถ Upstream Module (Load Balancing) ให้กับ Nginx ด้วยคำสั่ง

sudo nano /etc/nginx/sites-available/default


Continue reading

โดยทั่วไปเราอาจจะคุ้นเคยกับการดูแล และตรวจสอบระบบ (monitoring) ผ่านซอฟต์แวร์อย่าง Nagios (หรือซอฟต์แวร์อื่นๆ ที่อยู่ในกลุ่มเดียวกัน) ซึ่งนั่นก็แปลว่าคุณได้เข้าใจถึงความสำคัญของการตรวจสอบเป็นอย่างดี แต่ ณ ขณะนี้ทาง 10gen ได้ทำการ build บริการสำหรับ MongoDB ขึ้นมาที่ชื่อว่า Mongo Monitoring Service หรือเรียกสั้นๆ ว่า MMS โดยบริการตัวนี้ จะช่วยลดความยุ่งยากในการดูแล และตรวจสอบ MongoDB

MMS นั้นทำได้มากกว่าการบอกว่า MongoDB กำลังทำงานอยู่ ซึ่งตัว agent ที่อยู่บน MongoDB server จะทำการรายงานข้อมูลกลับมาอย่างเช่น ข้อมูล Memory, opcounters, จำนวน connection, network in/out, ขนาดของฐานข้อมูล ฯลฯ และที่สำคัญที่สุดข้อมูลที่แสดงกลับมาเหล่านี้ แสดงผลให้เราเห็นในรูปแบบของ chart ซึ่งเราสามารถ zoom และ expand ชุดข้อมูลที่เราต้องการจะดูได้โดยง่าย และที่จะไม่พูดถึงไม่ได้เลยคือขณะนี้ OpenShift ได้ประกาศการสนับสนุน MMS ซึ่งทำให้เราสามารถใช้งานบริการส่วนนี้ได้อย่างง่ายดาย

ขั้นตอนแรกให้เราเข้าไป sign up MMS ก่อน ที่ https://mms.10gen.com โดยคุณจะต้องระบุกลุ่ม สำหรับการจัดการสำหรับผู้ใช้หลายคนด้วย ถัดไปให้เราเข้าไปดาวน์โหลด Agent โดยลิงค์ดาวน์โหลดจะอยู่ในหน้า Host page โดยจะต้อง Log in ก่อน


Continue reading

Golang นั้นเป็นภาษาที่ใช้การเขียนโปรแกรมที่พัฒนาขึ้นจากทีมพัฒนาของ Google และกำลังเป็นที่นิยมใช้งานกันมากขึ้นในปัจจุบัน วิธีการเขียนโปรแกรมโดยใช้ Golang สามารถอ่านเพิ่มเติมได้ที่ https://golang.org/doc/code.html มาเริ่มต้นใช้งาน Golang บน Docker กัน เริ่มด้วยการติดตั้ง Docker ผ่าน curl กันก่อน

ติดตั้ง curl ด้วยคำสั่ง

sudo apt-get install curl

ติดตั้ง Docker ด้วยคำสั่ง

curl -sSL https://get.docker.com/ubuntu/ | sudo sh

ดาวน์โหลดและติดตั้ง Golang ด้วยคำสั่ง

wget https://storage.googleapis.com/golang/go1.4.2.linux-386.tar.gz


Continue reading