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 ທ່ານສາມາດຄລິກທີ່ລິ້ງເພື່ອເບິ່ງຄໍາແນະນໍາເພີ່ມເຕີມ