สวัสดีครับจากบทความตอนที่แล้ว “เริ่มต้นใช้ 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
Delegate คืออะไรDelegate จะเก็บตําแหน่ง Address ของ Method ที่ต้องการจะเรียกใช้ ทําให้เราสามารถเรียกใช้ Method ใดๆ ผ่าน Delegate ได้ คุณอาจจะสงสัยว่า ทําไมไม่เรียกใช้ Function ตรงๆไปเลย ข้อดีของการเรียกผ่าน Delegate คือสามารถเรียก Mathod ของ Class อื่นได้
เทคนิคการต้มไข่ เริ้มต้นด้วยนําไข่ใส่ในหม้อ และเติมนํ้าลงไปจนท่วมไข่ นําหม้อไปตั้งไฟ รอจนนํ้าเดือดแล้วจึงเริ่มจับเวลา โดยระยะเวลาการต้มจะขึ้นอยู่กับความต้องการดังนี้
ก่อนอื่นมาทําความรู้จักกับ Tor hidden service กันก่อน Tor hidden service เป็นการซ่อน Service หรือ Website ไม่ให้สามารถเปิดได้ด้วยเครือข่าย Internet ทั่วไป หรือไม่สามารถค้นหาผ่าน Search engine ทั่วไปได้ เรียกกันว่า Deep web และ Dark web โดยจะซ่อน Service หรือ Website ไว้ในเครือข่าย Tor ซึ่งจะสามารถเข้าได้ผ่าน Tor browser และ Url จะลงท้ายด้วย .onion รายละเอียดสามารถกลับไปอ่านจากบทความเรื่อง Deep web และ Dark web ด้านมืดของ Internet