CLI Tutorial: Container Volumes

ฟังก์ชันการจัดการ 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}", ...]}
CLI volumes parameter

ในที่นี้ {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}}, ...}}
CLI volumeMounts parameter

โดยที่:

  • {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}", ...]}]}
CLI volumesFrom parameter

โดยที่:

  • {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
CLI AddContainerVolume command

2. กระบวนการลบนั้นคล้ายกับกระบวนการเพิ่มที่อธิบายไว้ด้านบนซึ่งใช้พารามิเตอร์เดียวกัน:

~/jelastic/environment/control/removecontainervolume --envName {env_name} --nodeId {node_ID} --path {path}
CLI RemoveContainerVolume command

3. ในกรณีที่คุณต้องการเพิ่ม volume มากกว่าหนึ่งโหนด ควรใช้วิธี AddContainerVolumeByGroup จะเหมาะสมกว่าสำหรับเพิ่ม environment layer ทั้งหมดในคราวเดียว

~/jelastic/environment/control/addcontainervolumebygroup --envName  {env_name} --nodeGroup  {node_group} --path  {path}

ในที่นี้พารามิเตอร์ {node_group} อนุญาตให้กำหนดเลเยอร์ใน environment ปัจจุบัน (เช่น cp, bl, storage ฯลฯ) ซึ่งโหนดทั้งหมดควรแก้ไข volume ใหม่

CLI AddContainerVolumeByGroup command

4. คุณสามารถดำเนินการลบ volumes สำหรับเลเยอร์ทั้งหมดได้ด้วยคำสั่งเดียว:

~/jelastic/environment/control/removecontainervolumebygroup --envName  {env_name} --nodeGroup  {node_group} --path  {path}
CLI RemoveContainerVolumeByGroup command

เมื่อคุณใช้วิธีดังกล่าว คุณสามารถควบคุมปริมาณคอนเทนเนอร์ของคุณได้อย่างง่ายดายและจัดการได้ภายในเวลาไม่กี่นาที ในกรณีที่คุณต้องการเพิ่ม Mount Points ควบคู่ไปกับ volume คุณสามารถคลิกที่ลิงก์เพื่อดูคำแนะนำเพิ่มเติม