สำหรับท่านที่ใช้ Azure อยู่น่าจะรู้จัก Azure CLI โดยเฉพาะอย่างยิ่งท่านที่ใช้ Linux และ OSX อาจจะได้ใช้กันอยู่แล้ว เพราะการใช้ Command Line มันเร็วกว่าการที่จะไปใช้ผ่านหน้าเว็บไซต์แบบปกติ แต่การติดตั้ง Azure CLI ก็แลกมาด้วยความลำบาก โดยเฉพาะบน Linux ที่มักจะมีปัญหาเรื่อง Node.js และ npm เอาเป็นว่าคุณสามารถใช้งาน Azure CLI ได้จาก Docker Container โดยไม่ต้องติดตั้ง Azure CLI เลยจะดีกว่า วิธีการก็ง่ายมาก เพราะ Microsoft ได้ทำ Container มาให้เราใช้เรียบร้อยแล้ว

วิธีใช้งานก็ง่ายมาก ใช้คำสั่ง

docker run -it microsoft/azure-cli


Continue reading

Docker ถูกประยุกต์ใช้งานในหลายรูปแบบไม่เพียงแต่เป็น Service Container เท่านั้น แต่ยังถูกใช้เป็น Container สำหรับ Command Line ด้วย ยกตัวอย่างเช่น tutum-cli ที่รวมเอาคำสั่งที่ต้องใช้ใน tutum รวมเอาไว้ใน container เพื่อความสะดวกในการใช้งาน เวลาใช้งานก็สร้าง alias ของคำสั่ง เชื่อมกับ docker run อีกทีซึ่งดูแล้วอาจจะดูแปลกๆ แต่ก็สามารถทำได้ และใช้งานได้ดีเลยทีเดียว

ครั้งนี้เราจะมาลองสร้าง Container CLI กันดูบ้าง แต่ให้ดูเท่ต้องเป็น CLI ที่เข้าใช้งานได้จากหน้าเว็บและเรียกใช้คำสั่งที่เราต้องการได้ด้วย เราจะใช้ image ตั้งต้นของ CenturyLink ชื่อ wetty-cli มาสร้าง image กัน เริ่มจากสร้าง Dockerfile กันก่อนดังนี้

จากนั้นสั่ง build ดังนี้

docker build -t openstack-cli


Continue reading

Odoo เป็นโปรแกรมที่ไว้ใช้บริหารจัดการ การวางแผนทรัพยากรทางธุรกิจขององค์กร (ERP) ที่มีชื่อเดิมว่า OpenERP ความสามารถต่างๆของ Odoo นั้นสามารถอ่านเพิ่มเติมได้ที่ https://www.odoo.com/ เริ่มด้วยการติดตั้ง Docker ผ่าน curl กันก่อน ติดตั้ง curl ด้วยคำสั่ง

sudo apt-get install curl

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

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

ดาวน์โหลดและสร้าง Container ที่มีทำงานของ PostgreSQL ด้วยคำสั่ง

sudo docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres


Continue reading

Mosca เป็น MQTT Broker ที่พัฒนาโดยใช้ Node.js และเก็บข้อมูลบน LevelDB ทำให้ Mosca สามารถทำความเร็วในการอ่านและเขียนข้อมูลได้อย่างรวดเร็ว นอกจากนี้ยังสามารถเชื่อมต่อกับ ฐานข้อมูลอื่นเพื่อเก็บข้อมูลแบบ persistance ได้อีกด้วย การใช้งาน Mosca สามารถใช้งานผ่าน CLI และผ่าน Node.js App ได้อีกด้วย การติดตั้งสามารถติดตั้งผ่าน npm แล้วยังสามารถติดตั้งผ่าน Docker ได้อีกด้วย

มาลองเล่น Mosca ผ่าน Docker กัน สั่ง Docker run ได้เลยดังนี้

docker run -p 1883:1883 -p 80:80 -v /var/db/mosca:/db matteocollina/mosca


Continue reading

Kitematic เป็น GUI บน OSX สำหรับจัดการ Docker Container และได้เข้าร่วมกับโครงการ Docker เป็นที่เรียบร้อนแล้ว Kitematic ช่วยให้ชาว OSX ไม่ต้องยุ่งกับ Virtualbox, Vagrant และ Command Line อีกต่อไป มีเครื่องมือที่จำเป็นต้องใช้มาครบ ทั้ง Docker, Docker Machine เชื่อมต่อกับ Virtualbox ให้อัตโนมัติ ทำให้การใช้งาน Docker ได้ง่ายมากขึ้น

สำหรับท่านที่ใช้ OSX ดาวน์โหลด Kitematic ได้ที่หน้าโครงการ เมื่อเปิดการทำงานครั้งแรก Kitematic จะดาวน์โหลดโปรแกรมที่จำเป็นต้องใช้มาให้อัตโนมัติ จากนั้นจะแสดงรายการ Container แนะนำดังนี้

ลองมาสั่ง run ghost blog เลือกที่ ghost blog กกปุ่ม Create ได้เลย Kitematic จะทะยอยดาวน์โหลด Docker Image มาให้
Continue reading

การใช้งาน Docker Container สามารถใช้งานได้หลายแบบทั้งแบบ Container เดี่ยวๆ ใส่ service ที่ต้องการใช้ลงไป หรือเอา Container หลายตัวมาเชื่อมต่อกันผ่าน Docker Link เช่น volume + web + database เป็นต้น ซึ่งสามารถประยุกต์ใช้ได้หลายวิธี ครั้งนี้จะมาแนะนำสำหรับผู้ที่ต้องการแปลง web app แบบเดิม มาใช้เป็น Multi Container App เริ่มจากเราต้องออกแบบก่อนว่า Container App ที่เราจะสร้่างต้องใช้อะไรบ้าง ตัวอย่างเช่น มี web server + php เชื่อมต่อกับ mariadb เป็นต้น เราสามารถใช้ Docker Link, Fig, Compose ในการเชื่อม Container เข้าหากันได้ เมื่อเชื่อมโยงแล้ว Docker จะสร้าง ENV เพิ่มมาเพื่อให้เราใช้งานใน App นั้นๆ มาดูตัวอย่างกัน

เริ่มจาก run container ส่วน database ก่อนดังนี้

docker run -d -e MARIADB_PASS="mypass" --name mariadb tutum/mariadb

เราจะพบว่ามี MariaDB ทำงานแบบไม่ expose port มายังเครื่อง host จากนั้นลอง run wep app เปล่าๆ ขั้นมาเพื่อสังเกตการทำงาน

Continue reading

Hugo เป็น CMS ขนาดเล็กพัฒนาจากภาษา Go ไม่มีการเชื่อมต่อฐานข้อมูลใช้ไฟล์ TOML และ Markdown เป็นหลัก การเพิ่มหน้าเว็บหรือเนื้อหาในรูปแบบ post ต้องใช้ไฟล์ทั้งหมด และทุกครั้งที่มีการเปลี่ยนแปลง content ของเว็บไซต์ Hugo จะสร้างหน้าเว็บในรูปแบบ html ออกมาให้ ทำให้การแสดงผลเว็บไซต์ทำงานได้อย่างรวดเร็ว การติดตั้ง Hugo ต้องใช้ Go และไฟล์เนื้อหาของเว็บที่คุณต้องการ

เราสามารถลดความยุ่งยากในการติดตั้ง Go และ Hugo ได้ โดยใช้ Docker Image ชื่อ redlinemobi/docker-hugo วิธีการใช้งานก็สั่ง run ก็ง่ายๆ แบบนี้

docker run -d -P --name hugoblog redlinemobi/docker-hugo


Continue reading

ครั้งที่แล้วได้ทดลองใช้งาน Docker Swarm ไปบ้างแล้ว ครั้งนี้มาลองดูวิธีการใช้แบบอื่นๆ บ้าง หากคุณยังไม่ได้ติดตั้ง Swarm และผูก Docker Cluster ไว้ให้ตามอ่านเนื้อหาในครั้งก่อน เมื่อผูก cluster เรียบร้อยแล้ว มีทางเลือกในการใช้งานกับ cluster 2 แบบ คือ

  • ใช้งานผ่าน swarm โดยใช้ docker แบบปกติ
  • ใช้งานผ่าน swarm โดยใช้ docker-compose

การใช้งาน 2 วิธีนี้สามารถใช้งานร่วมกันได้ หากคุณใช้ docker แบบปกติสั่ง run container คุณสามารถกำหนด constraint หรือ affinity ร่วมด้วยได้ เช่น ต้องการใช้ compose ช่วยในการ deploy web หรือ scale web ก็สามารถทำได้


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