ฟังก์ชันการจัดการ Container (Docker) Volumes ที่อนุญาตให้สร้างที่เก็บข้อมูลในเครื่องแบบถาวรโดยการออกแบบนี้จะไม่ส่งผลกระทบกับการดำเนินการต่างๆระหว่างวงจรของคอนเทนเนอร์ การสร้าง storage ดังกล่าวเพื่อให้แน่ใจว่าที่เก็บมีความสมบูรณ์ระดับสูงและป้องกันข้อมูลสูญหาย
การใช้งาน CLI คุณสามารถทำได้สองวิธี:
การตั้งค่า Volumes ผ่าน Environment Topology
วิธีแรกในการสร้าง volume container เราจะพิจารณาการสร้าง environment ให้ถูกต้อง (หรือเมื่อเปลี่ยนโทโพโลยี) ดังนั้นในการตั้งค่าที่จัดเก็บคอนเทนเนอร์ในเครื่อง คุณสามารถใช้พารามิเตอร์ต่อไปนี้ในขณะที่ดำเนินการตาม CLI method:
- volumes – กำหนดรายการ volume ในเครื่องคุณ
- volumeMounts – อนุญาตให้กำหนดค่า mount points
- volumesFrom – นำเข้า volume ที่มีอยู่จากโหนดในบัญชีคุณ
1. พารามิเตอร์ทั้งหมดจะถูกประกาศไว้ภายในส่วนของ docker ที่เหมาะสม ตัวอย่างพารามิเตอร์แรกควรตั้งค่าดังนี้:
... "docker":{... "volumes": ["{local_volume}", "{local_volume}", ...]}
ในที่นี้ {local_volume} เป็นช่องข้อความสำหรับตำแหน่ง path volume ของคุณซึ่งควรภายวางไว้ในคอนเทนเนอร์ คุณสามารถระบุหลาย volume พร้อมกันได้โดยใช้ตัวคั่นจุลภาค
ตัวอย่างในรูปภาพด้านบนเราสร้าง environment ด้วย image jelastic/haproxy และแนบ volume ในเครื่อง 2 ชุดได้แก่: /my_volume_1 และ /my_volume_2
2. ระบุพารามิเตอร์ volumeMounts ด้วยคำสั่งต่อไปนี้:
... "docker":{... "volumeMounts" : {"{local_path}" : {"sourcePath" : "{remote_path}", "sourceNodeId" : "{node_ID}", "readOnly" : {true/false}}, ...}}
โดยที่:
- {local_path} – path ไปยังโฟลเดอร์ภายในโหนดของ environment ที่ระบุ เนื้อหาที่จะ mount ควรวางไว้ที่นี่
- {remote_path} – ตำแหน่งไดเรกทอรีที่ต้องการในคอนเทนเนอร์ระยะไกล (เช่น ที่อยู่ของข้อมูลต้นทาง)
- {node_ID} – ตัวระบุโหนดเฉพาะข้อมูลของคุณที่จะ mount
หมายเหตุ: คุณสามารถใช้พารามิเตอร์ “sourceNodeId” แทนได้:
“sourceNodeGroup” – กำหนด environment layer ซึ่งโหนดหลักจะใช้เป็นแหล่งข้อมูลสำหรับการดำเนินการ mount
“sourceHost” – IP ภายนอกหรือชื่อโดเมนที่กำหนดเองของเซิร์ฟเวอร์ที่จัดเก็บข้อมูล (รวมถึงชื่อภายนอก)
- {true/false} – ค่าที่เหมาะสมสำหรับการกำหนดสิทธิ์ read only หรือ read & write สำหรับโหนด client ในขณะที่ดำเนินการติดตั้งข้อมูล (false โดยค่าเริ่มต้น)
- {local_volume} – รายการ volume ที่จะ mount (หากไม่ระบุจะถูกคัดลอกทั้งหมด)
ยกตัวอย่างคำสั่งในภาพด้านบน เราติดตั้งข้อมูลจากโหนด 111109 ของบัญชีที่ใช้
3. พารามิเตอร์สุดท้าย volumesFrom คุณสามารถใช้คำสั่งนี้เพื่อ mount volumes ที่มีอยู่ทั้งหมดจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง (เช่นคัดลอก) ตัวอย่างเช่น:
... "docker":{... "volumesFrom":[{"sourceNodeId" : "{node_ID}", "readOnly" : {true/false}, "volumes" : ["{local_volume}", "{local_volume}", ...]}]}
โดยที่:
- {node_ID} – ตัวระบุโหนดเฉพาะข้อมูลของคุณที่จะ mount
หมายเหตุ: อีกทางเลือกหนึ่งคุณสามารถใช้ “sourceNodeGroup” เพื่อกำหนด environment layer ซึ่งจะใช้โหนดหลักเป็นแหล่งข้อมูลสำหรับการดำเนินการ mount
- {true/false} – ค่าที่เหมาะสมสำหรับการกำหนดสิทธิ์ read only หรือ read & write สำหรับโหนด client ในขณะที่ดำเนินการติดตั้งข้อมูล (false โดยค่าเริ่มต้น)
- {local_volume} – รายการ volume ที่จะ mount (หากไม่ระบุจะถูกคัดลอกทั้งหมด)
คำสั่งในภาพด้านบนเราได้เพิ่มเลเยอร์ใหม่ Docker images jelastic/tomcat8 และ mount volumes กับโหนด jelastic/haproxy ที่มีอยู่
การจัดการ Volumes โดยตรง
เราได้จัดเตรียมวิธี CLI ที่พัฒนาขึ้นเป็นพิเศษสำหรับการจัดการ volume ซึ่งจะไม่ส่งผลกระทบต่อ environment topology:
1. คำสั่งแรกคือ AddContainerVolume ช่วยให้คุณเพิ่ม volume ใหม่ภายใน environment ที่มีอยู่
~/jelastic/environment/control/addcontainervolume --envName {env_name} --nodeId {node_ID} --path {path}
โดยที่:
- {env_name} – ชื่อโดเมนสำหรับ environment ที่คุณต้งการแก้ไข
- {node_ID} -ID ที่ระบุโหนดเฉพาะ environment ที่เลือก ควรเพิ่มลงไปใน container volume
- {path} – เส้นทางในระบบไฟล์ในเครื่องของคุณไปยังไดเร็กทอรี volume
2. กระบวนการลบนั้นคล้ายกับกระบวนการเพิ่มที่อธิบายไว้ด้านบนซึ่งใช้พารามิเตอร์เดียวกัน:
~/jelastic/environment/control/removecontainervolume --envName {env_name} --nodeId {node_ID} --path {path}
3. ในกรณีที่คุณต้องการเพิ่ม volume มากกว่าหนึ่งโหนด ควรใช้วิธี AddContainerVolumeByGroup จะเหมาะสมกว่าสำหรับเพิ่ม environment layer ทั้งหมดในคราวเดียว
~/jelastic/environment/control/addcontainervolumebygroup --envName {env_name} --nodeGroup {node_group} --path {path}
ในที่นี้พารามิเตอร์ {node_group} อนุญาตให้กำหนดเลเยอร์ใน environment ปัจจุบัน (เช่น cp, bl, storage ฯลฯ) ซึ่งโหนดทั้งหมดควรแก้ไข volume ใหม่
4. คุณสามารถดำเนินการลบ volumes สำหรับเลเยอร์ทั้งหมดได้ด้วยคำสั่งเดียว:
~/jelastic/environment/control/removecontainervolumebygroup --envName {env_name} --nodeGroup {node_group} --path {path}
เมื่อคุณใช้วิธีดังกล่าว คุณสามารถควบคุมปริมาณคอนเทนเนอร์ของคุณได้อย่างง่ายดายและจัดการได้ภายในเวลาไม่กี่นาที ในกรณีที่คุณต้องการเพิ่ม Mount Points ควบคู่ไปกับ volume คุณสามารถคลิกที่ลิงก์เพื่อดูคำแนะนำเพิ่มเติม