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

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

หลังจากที่รอมานาน Docker 1.5 ก็มีเครื่องมือเกี่ยวกับ Stats มาให้ หลังจากที่หันไปใช้ cAdvisor พักใหญ่ ในรุ่น 1.5 นี้ยังไม่มีเครื่องมืออย่างเช่น swarm, machine และ composer เข้ามาด้วย สำหรับท่านที่เป็น DevOps ก็ใช้เครื่องมือเดิมกันต่อไป :) มาดู Docker Stats กันก่อน เครื่องมือ Stats ที่ให้มาก็ธรรมดามากๆ สามารถเรียกดูข้อมูลการใช้ทรัพยากรของ Container ได้ทั้ง CPU, Memory, Network ซึ่งเพียงพอต่อการใช้งาน Stats สามารถใช้งานได้ผ่าน Docker CLI และผ่าน API สำหรับท่านที่ใช้ Docker รุ่นเก่า อัพเกรด Docker 1.5 กันก่อนโดยติดตั้ง package lxc-docker-1.5.0 ดังนี้

sudo apt-get install lxc-docker-1.5.0

สำหรับท่านที่ยังไม่มี Docker ก็ติดตั้งได้โดยใช้ curl-ssh ดังนี้

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

สำหรับการใช้งานก็ง่ายมากๆ ใช้คำสั่ง


Continue reading

ครั้งที่แล้วเคยนะนำวิธีการใช้งาน Docker Machine ไปแล้วโดยใช้งานร่วมกับ Digital Ocean ครั้งนี้มาของเชื่อมต่อกับ Racspace Cloud กันดูบ้าง Docker Machine มีการพัฒนาเพิ่มขึ้นและรองรับการเชื่อมต่อกับ Public Cloud ได้หลายตัวมากขึ้น รวมถึง Rackspace ด้วย ครั้งนี้มาลองใช้ Docker Machine กันครับ ใครที่ยังไม่มี Docker Machine ก็ดาวน์โหลดที่ GitHub จากนั้นก็ติดตั้งตามปกติ

Docker Machine ต้องใช้ username, API Key และ region ในการสร้าง instance ใน Rackspace Cloud ในส่วน username, region คงไม่มีปัญหาอะไรเพราะ Rackspace มี region ไม่เยอะนัก ถ้าอยู่ในโซนเอเซียแนะนำใช้ region ที่ฮ่องกง (HKG) เพราะใกล้ที่สุด สำหรับ API Key ดูได้จากหน้า Account Setting


Continue reading

Docker ประกาศเครื่องมือมาใหม่เพื่อรองรับการทำ Service Automation ให้ง่ายมากขึ้น ผ่านเครื่องมือชื่อ Machine ซึ่งสามารถช่วยให้คุณสร้างและจัดการ docker host บน

  • Virtual Machine Desktop เช่น Virtual Box, VMware Fusion
  • HyperVisor เช่น HyperV, VMware vSphere
  • Cloud Provrider เช่น Amazon Web Service, VMware vCloud Air, Google Compute Engine, Rackspace
  • Private Cloud เช่น OpenStack

ได้สะดวกมากขึ้น สามารถสั่ง run หรือ build Docker image ไปยังเครื่องที่เลือกใช้งานได้สะดวกมากขึ้น โดยไม่ต้องคำนึงถึงการเตรียม Docker Host หรือตั้งค่า tcp port ใดๆ สำหรับ Machine ยังอยู่ในช่วงของการพัฒนา การใช้งาน Machine จำเป็นต้องใช้ Docker + identity authentication และ Machine


Continue reading

Serf เป็นเครื่องมือที่ช่วยให้ การจัดการ กับ ระบบคลัสเตอร์ทำได้ง่ายขึ้น  ทำงานโดยผ่าน GOSSIP โปรโตคอล ซึง Serf ถูกออกแบบมาเป็นโครงสร้างที่  ไม่ซับซ้อน, ใช้ทรัพยากรน้อย, ทำงานได้เร็ว และ ยืดหยุ่น อยากให้เปรียบเทียบกับ Hearbeat แม้ฟังก์ชั่นอาจจะไม่ตรงตัวนักแต่จะทำให้เข้าใจได้ง่ายกว่า Serf พัฒนาโดย HarshiCorp  ซึ่งเป็นคนพัฒนา Vagrant เขียนด้วย ภาษา Go (Golang)

สาเหตุที่ผมเลือกใช้ Serf ในการนำเอามาใช้งานคือ ต้องการหลีกเลี่ยงการออกแบบระบบให้กลายเป็น (Single point of failure) ขณะเดียวกัน ลดความยุ่งยากของระบบที่ทุกสิ่งทุกอย่างรวมอยู่ด้วยกัน (Centralized) นอกจากนั้นผมต้องการนำเอาระบบนี้มาใช้ใน Docker และ ขณะเดียวกันก็ลดความยุ่งยากของการ deployment ระบบ สรุปภาพรวมของความต้องการผมได้ดังนี้

  • หลีกเลี่ยง จุดตาย (Single point Of Failure)
  • หลีกเลี่ยง ระบบที่รวมอยู่ที่ศูนย์กลาง (De-centralized)
  • อยากได้การทำงานของ ระบบที่ไม่ซับซ้อน เพื่อง่ายต่อการทำความเข้าใจ หรือ การเรียนรู้  และ ง่ายต่อการติดตั้ง ปรับแต่ง
  • etcd  ต้องการ Server etcd ไม่งั้นจะคอย report ERROR ไม่สามารถเชื่อมต่อกับ Node Datacenter ได้
  • Zookeeper ระบบมีความซับซ้อน
  • Dooserd ดูจาก repository ไม่ค่อยมีการ update และ issue fix  มานานแล้วผมจึงใช้
  • Google Kubernates มีขนาดใหญ่ไปและผมต้องการระบบอะไร ที่มันมีความซับซ้อนน้อยที่สุด


Continue reading

CircleCI คือ Host ที่ใช้สำหรับทดสอบ Build และ deploy ซึ่งเป็นของ CircleCI มาเปิดให้บริการ ซึ่งหากเราไม่ต้องการใช้ resource ของตัวเอง หรือเรามี resource ไม่พอ ก็ใช้ Host ของ CircleCI แทน โดยขั้นตอนแรกให้เราเข้าไปสมัคร Account สำหรับใช้งานที่ https://circleci.com แล้วจะ redirect มาที่หน้า githup เพื่อ Login หากเรามี Account อยู่บน Githup อยู่แล้วก็ใช้ได้เลยหากไม่มีก็สมัครใหม่ เมื่อ Login แล้วจะขึ้นหน้าให้เพิ่ม Public key ของ Host CircleCI ให้เรากด “Authorize application” ที่นี้ก็สามารถใช้งาน Host บน CircleCI ได้แล้วในบทความนี้จะใช้ Repository ของ tutum-docker-nginx เพื่อเป็นตัวอย่างในการ Bulid และ Deploy Service nginx Web Server โดยให้เราทำการ Fork Repository tutum-docker-nginx มาไว้ใน Repository ของเรา


Continue reading

วิธีการกำหนดการใช้ทรัพยากรณ์ CPU และ Memory สามารถทำได้โดยการใช้ –m และ –c ในการกำหนดได้ดังนี้

  • -m : จำนวน Memory ที่ต้องการกำหนดให้ใส่ค่าจำนวนที่ต้องการตามด้วยหน่วย ดังนี้
    • b : byte
    • k : Kilobyte
    • m : Megabyte
    • g : Gigabyte
  • -c : จำนวน Core ของ cpu ที่ต้องการจำนวน Core นับจาก 0

ตัวอย่างเช่น

sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql –m 256m –c 0

คือกำหนดให้ Container ที่ชื่อ some-mysql ที่มีการทำงานของ MySQL ให้สามารถใช้งาน Memory ได้สูงสุด 256 Megabyte และสามารถใช้ CPU ได้ 1 Core ชื่อ Core 0

Docker Hub นั้นเป็นแหล่งรวมไฟล์ Image ของ Docker จากนักพัฒนา Docker เริ่มต้นด้วยการสมัครสมาชิกกันก่อนเข้าไปที่ https://hub.docker.com แล้วทำการกรอกข้อมูลลงในช่องต่างๆดังนี้

  • Username : ชื่อผู้ใช้งาน
  • Password : รหัสผ่าน
  • Email Address : อีเมลที่ใช้ในการสมัคร

ถ้าต้องการรับข้อมูลข่าวสารของ Docker ผ่านทางอีเมลให้ติ๊กถูกที่ Yes! I want the weekly newsletter! เมื่อกรอกข้อมูลครบถ้วนแล้วกดปุ่ม Sing Up

เมื่อกดแล้วให้ไปตรวจสอบอีเมลที่ได้ทำการสมัครไว้จะมีเมลเพื่อยืนยันการสมัคร กดที่ปุ่ม Confirm Your Email


Continue reading

เริ่มด้วยการติดตั้ง Docker ผ่าน curl กันก่อน
ติดตั้ง curl ด้วยคำสั่ง

sudo apt-get install curl

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

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

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

sudo docker run --name local_registry -p 5000:5000 registry

อนุญาตให้มีการใช้งาน Local Registry ด้วยคำสั่ง

echo 'DOCKER_OPTS="--insecure-registry 172.17.42.1:5000"' | sudo tee -a /etc/default/docker


Continue reading