Docker swarm เป็น Native Clustering ของ Docker คือเป็นเครื่องมือช่วยจัดการเครื่อง server ที่รัน Docker หลายๆเครื่องให้อยู่ในสภาพแวดล้อมเดียวกัน พูดง่ายๆก็คือ การนําเอาเครื่อง server หลายๆเครื่อง (Worker) มาช่วยกันทํางาน โดยจะถูกควบคุมการทํางานโดย Manager และยังมีระบบ IPVS ที่เป็น Load-balance ซึ่งจะทําให้เราสามารถเข้าถึง Website หรือ Application ต่างๆ ที่เรารันอยู่ได้จากเครื่องไหนก็ได้ใน Swarm โดย IPVS จะช่วยจัดการให้เราเองโดยอัตโนมัติ ศัพท์ที่เกี่ยวกับ Docker swarm ที่ควรรู้มีดังนี้

จากรูปจะเห็นว่า Manager จะเป็นตัวจัดการ และกระจายงานต่างๆไปให้กับ Worker ทํางาน โดยปกติแล้ว Manager ควรมีมากกว่า 1 เครื่อง และควรมีเป็นจํานวนเลขคี่ เหตุผลก็คือ เมื่อ Manager เครื่องใดเครื่องหนึ่งเกิดปัญหาขึ้นมา Manager เครื่องอื่นจะขึ้นมาทํางานแทนทันที เราสามารถกําหนดให้ Manager ทําหน้าที่กระจายงานอย่างเดียว หรือทั้งกระจายงานและ ร่วมทํางานด้วยก็ได้ ถ้าในกรณีที่ Worker เครื่องใดหยุดทํางาน Manager จะย้าย Task ของเครื่องที่หยุดทํางาน ไปกระจายให้กับ Worker เครื่องอื่นๆโดยอัตโนมัติ มีการยืนยันตัวตน, กำหนดสิทธิ์ และเข้ารหัส Traffic ที่มีการพูดคุยกันระหว่าง Node ภายใน Swarm พร้อมระบบจัดการ TLS Certificate ภายในตัว

เนื่องจากคุณสมบัติของ Docker swarm ทําให้เราสามารถ Scale และ Load-balance service ได้ง่ายๆ จึงเหมาะกับงานที่ต้องการ Scale ระบบ ยกตัวอย่างเช่น ระบบลงทะเบียนนักศึกษา ซึ่งในช่วงลงทะเบียน จะมีนักศึกษาเข้าใช้งานพร้อมกันจํานวนมากทําให้ต้อง Scale ระบบเพื่อให้รองรับจํานวนนักศึกษาที่เข้าใช้งาน Docker swarm จึงช่วยให้การ Scale ระบบเป็นเรื่องง่ายและรวดเร็ว

ในบนความนี้ผมจะอธิบาย step การใช้งานในแบบคร่าวๆนะครับ เพื่อให้เห็นภาพโดยรวมทั้งระบบก่อน และในบทความหน้าผมจะทดลองใช้งาน Docker swarm กันจริงๆให้ดูครับ การใช้งานจะเริ่มต้นด้วยกําหนดเครื่อง Manager เมื่อเรากําหนดเครื่องใดเครื่องหนึ่งเป็น manager แล้ว เราจะได้ token มาสองอันดังนี้
เราจะนํา server ที่รัน docker เครื่องอื่นๆ เค้าไป join โดยใช้ token และ ip ของเครื่อง Manager ที่เรากําหนดไว้ตอนต้น เมื่อเรานําเครื่องมา join กันเรียบร้อยแล้ว ขั้นตอนต่อไปคือต้อง create service เพื่อสั่งให้ Docker swarm ทํางาน Application ตามที่เราต้องการ และเรายังสามารถ Scale เพิ่ม-ลดจํานวน task (Container) ได้ตามต้องการ ตอนต่อไปเรื่อง เริ่มต้นใช้ Docker Swarm
Auto login on raspberry pi ถ้าเราใช้ debian บน raspberry pi ในโหมด gui ระบบจะ login user: pi ให้เราโดยอัตโนมัติ แต่ถ้าเราต้องการให้ login ด้วย user อื่นๆ ก็สามารถทำได้โดย แก้ไข ไฟล์ "/etc/lightdm/lightdm.conf" ด้วยคำสั่งนี้
อัลกอริทึมนี้จะใช้กุญแจสองตัวเพื่อทำงาน ตัวหนึ่งใช้ในการเข้ารหัสและอีกตัวหนึ่งใช้ในการถอดรหัสข้อมูลที่เข้ารหัสมา โดยกุญแจตัวแรก คือ กุญแจสาธารณะ (Public keys) ซึ่งจะเป็นกุญแจที่ใช้ในการเข้ารหัสข้อมูล กุญแจตัวที่สองคือ กุญแจส่วนตัว (Private keys) ซึ่งจะเป็นกุญแจที่ใช้ในการถอดรหัส อ่านๆไปแล้วอาจจะงงว่าจะเอาไปใช้ได้อย่างไร เรามาดูการทํางานกันดีกว่า
ระบบ file ใน Ubuntu จะมีการกําหนด Owner และ สิทธิ์ของ User การอ่านสิทธิ์เข้าใช้งาน file, Directory ใน ubuntu") ที่จะกระทําการใดๆกับ file หรือ Directory นั้นๆ โดยปกติแล้ว User ที่สร้าไฟล์หนึ่งขึ้นมา จะเป็นเจ้าของไฟล์(Owner)นั้นโดยอัตโนมัติ แต่ถ้าหากต้องการแก้ไข เจ้าของไฟล์ให้เป็น User อื่น สามารถเปลี่ยนด้วยคําสั่งนี้