สวัสดีครับจากบทความตอนที่แล้ว “เริ่มต้นใช้ Docker Swarm” เราได้เรียนรู้พื้นฐานการใช้งาน Docker Swarm กันไปแล้ว ในบทความนี้เราจะมาต่อยอดโดยนํา Docker Compose มาใช้ใน Docker Swarm เพราะในงานจริงเราจะได้ทํางานได้ง่ายและสะดวกขึ้น ก่อนที่จะอ่านบทความนี้ควรจะต้องมีความรู้ในเรื่องของ Docker Swarm และ Docker Compose ก่อน กลับไปอ่านได้ที่นี่
อย่าลืม Update Docker เป็น version ล่าสุดก่อนนะครับ
อันดับแรกต้อง Join Swarm กันให้เรียบร้อยก่อนครับ ซึ่งวิธีการ Join Swarm อ่านได้จากที่นี่ เริ่มต้นใช้ Docker Swarm โดยเราจะ Join Swarm ไว้แต่ยังไม่ต้องรัน Service เราจะมารัน Service ด้วย Docker Compose ตามวิธีดังต่อไปนี้ ถ้าใช้ DigitalOcean เราจะต้องไป Config Firewall ให้สามารถใช้งาน port ที่ Docker Swarm ต้องการได้ อ่านเพิ่มเติมที่นี่ครับ Configure the Linux Firewall for Docker Swarm on Ubuntu ผมใช้ DigitalOcean สร้างเครื่องขึ้นมาทั้งหมด 5 เครื่อง แล้วนํามา Join Swarm
เมื่อเรา Join Swarm เรียบร้อยแล้ว ในตัวอย่างของผม Join กันทั้งหมด 5 เครื่องตามนี้
สร้างไฟล์ docker-compose.yml
version: '3'
services:
test:
image: thiti/swarm-example
ports:
- 3000:3000
deploy:
replicas: 10
การเขียน File docker-compose.yml จะเขียนเหมือน Docker Compose ทั่วๆไป แต่สิ่งที่เพิ่มเติมเข้ามาคือ Config ในส่วนของการ Scale ระบบคือ deploy และ replicas เราก็ใส่ replicas ได้ตามใจชอบ ในตัวอย่างนี้ผมใช้ Docker Image เดิมในบทความที่แล้ว (เป็น webserver แสดงชื่อของ Host) คําสั่งที่ใช้ในการรัน service คือ
docker stack deploy -c <ชื่อ file docker compose> <ชื่อ Service>
ลองรัน Service จะได้แบบนี้ครับ
Check ดูว่า Stack เราถูกสร้างขึ้นมาหรือยัง ด้วยคําสั่ง
docker stack ls
Check ดูว่า service เราถูกสร้างขึ้นมาหรือยัง ด้วยคําสั่ง
docker service ls
เราจะได้ Service ขึ้นมา 1 ตัว ลองเปิดหน้าเว็บดูครับ
จะแสดงชื่อของ node ที่รับงานไป ลองปิดดูหลายๆครั้ง จะเห็นว่าชื่อจะเปลี่ยนไปตามระบบจัดการว่าให้เครื่องไหนเป็นคนรับงานไป
วิธีการลบ Stack ให้ใช้คําสั่ง
docker stack rm <ชื่อ stack>
ส่วนคําสั่งในการจัดการ Service หรือ node เป็นคําสั่งของ Swarm ทั่วไปครับ สามารถอ่านเพิ่มเติมได้จาก เริ่มต้นใช้ Docker Swarm