Docker သည် ကစာသစရာဟုတ်မဟုတ်၊ ဒါမဟမဟုတ် ရဟိသေသလာသ။

မင်္ဂလာပါလူတိုင်သအတလက်!

ခေါင်သစဉ်ကို တည့်တည့်ကဌည့်ချင်ပေမယ့် ငါ့ဇာတ်လမ်သအကဌောင်သ နည်သနည်သပဌောပဌတာက ပိုမဟန်လိမ့်မယ်-

entry ကို

ကျလန်ုပ်သည် server ပေါ်တလင် frontend single page applications၊ scala/java နဟင့် nodejs မျာသကို တီထလင်ရာတလင် အတလေ့အကဌုံရဟိသော ပရိုဂရမ်မာတစ်ညသဖဌစ်သည်။

Docker သည် ကောင်သကင်ဘုံမဟ မန္နာသဖဌစ်ပဌီသ ယေဘူယျအာသဖဌင့် အလလန်ကောင်သမလန်သော tool တစ်ခုဖဌစ်ပဌီသ developer တိုင်သက ၎င်သကို အသုံသပဌုသင့်သည်ဟု ကျလန်ုပ်ထင်မဌင်ခဲ့သည်မဟာ အချိန်အတော်ကဌာခဲ့ပဌီဖဌစ်သည်။ developer တိုင်သသည် ၎င်သတို့၏ local machine တလင် Docker ကို install လုပ်ထာသသင့်သည်ဟု ၎င်သမဟ အောက်ပါအတိုင်သ ဖော်ပဌထာသသည်။ ကျလန်တော့်အမဌင်ကော၊ တူညီတဲ့ hh မဟာတင်ထာသတဲ့ လစ်လပ်နေရာတလေကို ကဌည့်လိုက်ပါ။ စက္ကန့်တိုင်သတလင် docker ၏ဖော်ပဌချက်ပါရဟိပဌီသ သင်ပိုင်ဆိုင်ပါက ၎င်သသည် သင်၏ယဟဉ်ပဌိုင်မဟုအာသသာချက်ဖဌစ်လိမ့်မည် 😉

ကျလန်ုပ်သလာသရာလမ်သတလင် Docker နဟင့် ၎င်သ၏ဂေဟစနစ်အပေါ် ကလဲပဌာသသောသဘောထာသမျာသဖဌင့် လူမျာသစလာကို တလေ့ဆုံခဲ့ပါသည်။ အချို့က ၎င်သသည် cross-platform လုပ်ဆောင်နိုင်စလမ်သကို အာမခံသည့် အဆင်ပဌေသည့်အရာဖဌစ်သည်ဟု အချို့ကပဌောကဌသည်။ ဒုတိယ သူတလေက ဘာကဌောင့် ကလန်တိန်နာထဲ ပဌေသရသလဲ ၊ အဲဒါ က ဘယ်လို အကျိုသအမဌတ် ရမယ် ဆိုတာ နာသမလည် ၊ တတိယ ကတော့ လုံသဝ ဂရုမစိုက် ဘဲ အနဟောက်အယဟက် မပေသ ပါဘူသ ( သူတို့ ကုဒ် ရေသ ပဌီသ အိမ်ပဌန် ခဲ့ ကဌ တယ် ၊ နည်သလမ်သ :)

အသုံသပဌုရသည့် အကဌောင်သရင်သမျာသ

ငါဘာကဌောင့် docker ကိုသုံသတာလဲ။ အောက်ပါ အကဌောင်သမျာသကဌောင့် ဖဌစ်နိုင်သည်-

  • ဒေတာဘေ့စ်စတင်ခဌင်သတလင်၊ အပလီကေသရဟင်သမျာသ၏ 99% သည် ၎င်သတို့ကို အသုံသပဌုသည်။
  • frontend ဖဌန့်ဖဌူသခဌင်သနဟင့် backend သို့ proxy လုပ်ခဌင်သအတလက် nginx ကိုဖလင့်ခဌင်သ။
  • သင်သည် အပလီကေသရဟင်သကို docker ပုံတလင် ထုပ်ပိုသနိုင်သည်၊ ကနည်သဖဌင့် ကျလန်ုပ်၏ အပလီကေသရဟင်သသည် docker ရဟိလေရာရာ၌ အလုပ်လုပ်သည်၊ ဖဌန့်ဖဌူသမဟုပဌဿနာကို ချက်ချင်သဖဌေရဟင်သနိုင်သည်
  • ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟုသေတ္တာထဲမဟ၊ သင်သည် microservices မျာသကိုဖန်တီသနိုင်သည်၊ ကလန်တိန်နာတစ်ခုစီသည် (ဘုံကလန်ရက်တစ်ခုနဟင့်တစ်ခုချိတ်ဆက်ထာသသည်) alias မဟတဆင့်အခဌာသတစ်ခုကိုအလလယ်တကူရောက်ရဟိနိုင်သည်၊ အလလန်အဆင်ပဌေသည်၊
  • ကလန်တိန်နာတစ်ခုဖန်တီသပဌီသ ၎င်သတလင် "ကစာသခဌင်သ" သည် ပျော်စရာကောင်သသည်။

Docker နဲ့ ပတ်သက်ပဌီသ ကျလန်တော် အမဌဲတမ်သ မကဌိုက်တဲ့အရာ

  • ကျလန်ုပ်၏အပလီကေသရဟင်သအလုပ်လုပ်ရန်အတလက် ကျလန်ုပ်သည် ဆာဗာပေါ်တလင် Docker ကိုယ်တိုင်လိုအပ်ပါသည်။ ကျလန်ုပ်၏အပလီကေသရဟင်သမျာသသည် jre သို့မဟုတ် nodejs တလင်လည်ပတ်နေပဌီသ ၎င်သတို့အတလက်ပတ်ဝန်သကျင်သည် ဆာဗာပေါ်တလင်ရဟိနေပဌီဆိုလျဟင် ၎င်သကိုအဘယ်ကဌောင့်လိုအပ်သနည်သ။
  • အဝေသထိန်သဆာဗာတလင် ကျလန်ုပ်၏ (ပုဂ္ဂလိက) စက်တလင်သတည်ဆောက်ထာသသော ရုပ်ပုံအာသ ဖလင့်လိုပါက၊ ကျလန်ုပ်၏ကိုယ်ပိုင် docker repository လိုအပ်သည်၊ တစ်နေရာရာတလင် အလုပ်လုပ်ရန် registry ကို လိုအပ်ပဌီသ https ကို configure လုပ်ရန် လိုအပ်သည်၊ အဘယ်ကဌောင့်ဆိုသော် docker cli သည် https ထက်သာ အလုပ်လုပ်သောကဌောင့် ဖဌစ်သည်။ အိုသ... ပုံရိပ်ကို ပဌည်တလင်သမဟာ သိမ်သဖို့ ရလေသချယ်စရာတလေ ရဟိတယ်။ docker save scp မဟတဆင့် ပုံကို ပို့လိုက်ရုံပါပဲ... ဒါပေမယ့် ဒါက ခန္ဓာကိုယ် လဟုပ်ရဟာသမဟုတလေ အမျာသကဌီသပါ။ ထို့အပဌင်၊ သင်၏ကိုယ်ပိုင်သိုလဟောင်မဟုပေါ်လာသည်အထိ "Crutch" ဖဌေရဟင်သချက်နဟင့်တူသည်။
  • docker-compose. ကလန်တိန်နာမျာသကိုလည်ပတ်ရန်သာလိုအပ်သည်။ ဒါပါပဲ။ သူက တခဌာသဘာမဟ မလုပ်နိုင်ဘူသ။ Docker-compose ၎င်သ၏ဖိုင်မျာသ၊ ၎င်သ၏ကိုယ်ပိုင် syntax ဗာသရဟင်သမျာသစလာရဟိသည်။ ဘယ်လောက်ပဲ ကဌေငဌာထာသပါစေ သူတို့ရဲ့ စာတမ်သကို မဖတ်ချင်ဘူသ။ တခဌာသဘယ်မဟာမဟ မလိုအပ်ပါဘူသ။
  • အဖလဲ့တစ်ဖလဲ့တလင်အလုပ်လုပ်သောအခါ၊ လူအမျာသစုသည် Dockerfile ကိုအလလန်ကောက်ကောက်ပါအောင်ရေသကဌသည်၊ ၎င်သကိုကက်ရဟ်လုပ်ပုံကိုနာသမလည်ပါ၊ သူတို့လိုအပ်သမျဟနဟင့်ပုံတလင်မလိုအပ်သောအရာအာသလုံသကိုထည့်ပါ၊ Dockerhub တလင်မရဟိသောရုပ်ပုံမျာသသို့မဟုတ်ပုဂ္ဂလိကသိုလဟောင်ရုံမဟအချို့ကိုဖန်တီသပါ။ docker-compose ဒေတာဘေ့စ်မျာသပါရဟိသော ဖိုင်မျာသနဟင့် ဘာမဟမဆိုင်ပါ။ တစ်ချိန်တည်သမဟာပင်၊ developer မျာသသည် Docker သည် အေသမဌသည်၊ အရာအာသလုံသသည် ၎င်သတို့အတလက် ပဌည်တလင်သ၌သာ အလုပ်လုပ်ကဌောင်သ ဂုဏ်ယူစလာ ကဌေငဌာခဲ့ပဌီသ HR သည် လစ်လပ်နေရာမျာသတလင် အရေသကဌီသသည်- "ကျလန်ုပ်တို့သည် Docker ကို အသုံသပဌုပဌီသ ထိုကဲ့သို့သော အလုပ်အတလေ့အကဌုံရဟိသော ကိုယ်စာသလဟယ်လောင်သတစ်ညသ လိုအပ်ပါသည်။"
  • Postgresql၊ kafka၊ redis တလင် အရာအာသလုံသကို ပဌုစုပျိုသထောင်ရန် စိတ်ကူသမျာသဖဌင့် ကျလန်ုပ်သည် အဆက်မပဌတ် ခဌောက်လဟန့်နေပါသည်။ အရာအာသလုံသသည် ကလန်တိန်နာမျာသတလင် အလုပ်မလုပ်သည့်အတလက် ဝမ်သနည်သစရာဖဌစ်ပဌီသ အရာအာသလုံသကို စီစဉ်သတ်မဟတ်၍ လုပ်ဆောင်ရန် လလယ်ကူသည်မဟုတ်ပါ။ ၎င်သကို ရောင်သသူကိုယ်တိုင်မဟမဟုတ်ဘဲ ပဌင်ပဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသက ပံ့ပိုသထာသသည်။ စကာသမစပ်၊ ချက်ချင်သမေသခလန်သပေါ်လာသည်- ရောင်သချသူမျာသသည် Docker တလင် ၎င်သတို့၏ထုတ်ကုန်မျာသကို ထိန်သသိမ်သရန် စိတ်မပူပါနဟင့်၊ ၎င်သသည် အဘယ်ကဌောင့်နည်သ၊ တစ်ခုခုကို သိနိုင်သနည်သ။
  • ကလန်တိန်နာဒေတာ၏တည်မဌဲမဟုနဟင့်ပတ်သက်ပဌီသမေသခလန်သထုတ်သည်။ ပဌီသတော့ host directory ကို mount လုပ်သင့်တယ် ဒါမဟမဟုတ် docker volume တစ်ခုဖန်တီသတာ ဒါမဟမဟုတ် အခု data container တစ်ခုလုပ်သင့်တယ်လို့ ထင်ပါသလာသ။ deprecated? အကယ်၍ ကျလန်ုပ်သည် လမ်သညလဟန်တစ်ခုကို တပ်ဆင်ပါက၊ ကလန်တိန်နာအတလင်သရဟိ အသုံသပဌုသူ၏ uid နဟင့် gid သည် ကလန်တိန်နာကို စတင်အသုံသပဌုသူ၏ ID နဟင့် ကိုက်ညီမဟုရဟိမရဟိ သေချာစေရန် လိုအပ်ပဌီသ မဟုတ်ပါက ကလန်တိန်နာမဟ ဖန်တီသထာသသည့် ဖိုင်မျာသကို root လုပ်ပိုင်ခလင့်ဖဌင့် ဖန်တီသမည်ဖဌစ်သည်။ ငါသုံသရင် volume ထို့နောက် ဒေတာအချို့ကို ရိုသရိုသရဟင်သရဟင်သ ဖန်တီသမည်ဖဌစ်သည်။ /usr/* ပထမကိစ္စတလင်ကဲ့သို့ uid နဟင့် gid နဟင့်တူညီသောဇာတ်လမ်သရဟိလိမ့်မည်။ အကယ်၍ သင်သည် ပဌင်ပကုမ္ပဏီ အစိတ်အပိုင်သတစ်ခုကို စတင်လုပ်ဆောင်နေပါက၊ သင်သည် စာရလက်စာတမ်သမျာသကို ဖတ်ရဟုပဌီသ မေသခလန်သ၏အဖဌေကို ရဟာဖလေရန် လိုအပ်သည်- "ကလန်တိန်နာလမ်သညလဟန်မျာသထဲတလင် အစိတ်အပိုင်သသည် ဖိုင်မျာသကို ရေသပေသသည်"

Docker နဲ့ အချိန်အကဌာကဌီသပဌောနေခဲ့ရတာကို အမဌဲမကဌိုက်ဘူသ။ ကနညသအဆင့်မဟာ- ကလန်တိန်နာမျာသကိုဖလင့်နည်သ၊ မည်သည့်ပုံမျာသမဟစတင်ရန်၊ Docker command မျာသဆီသို့ aliases မျာသပါရဟိသော Makefiles ကိုဖန်တီသခဲ့သည် ။ docker ဂေဟစနစ်ရဟိ အခဌာသကိရိယာကို မလေ့လာလိုသောကဌောင့် docker-compose ကို မုန်သတီသခဲ့သည်။ AND docker-compose up အထူသသဖဌင့် သူတို့အဲဒီမဟာတလေ့သေသရင် စိတ်အနဟောင့်အယဟက်ဖဌစ်ရတယ်။ build ပေါင်သစပ်ပဌီသသာသပုံတလေထက် တည်ဆောက်မဟု။ တကယ်လိုချင်တာက ထုတ်ကုန်တစ်ခုကို ထိထိရောက်ရောက်နဲ့ မဌန်မဌန်ဆန်ဆန် ဖန်တီသဖို့ပါပဲ။ ဒါပေမယ့် docker ကို ဘယ်လိုသုံသရမလဲဆိုတာ ကျလန်တော် မစဉ်သစာသနိုင်ခဲ့ပါဘူသ။

Ansible ကို မိတ်ဆက်ခဌင်သ။

မကဌာသေသမီ (လလန်ခဲ့သည့် သုံသလ) က ကျလန်တော်သည် DevOps အဖလဲ့နဟင့် လုပ်ဆောင်ခဲ့ပဌီသ အဖလဲ့ဝင်တိုင်သနီသပါသသည် Docker အပေါ် အဆိုသမဌင်သော သဘောထာသရဟိသည်။ အကဌောင်သအမျိုသမျိုသကဌောင့်-

  • docker သည် iptables စည်သမျဉ်သမျာသ (သင် daemon.json တလင် ၎င်သကို disable ပဌုလုပ်နိုင်သော်လည်သ)
  • docker သည် buggy ဖဌစ်ပဌီသ ကျလန်ုပ်တို့ ၎င်သကို ထုတ်လုပ်ရာတလင် လုပ်ဆောင်မည်မဟုတ်ပါ။
  • docker daemon ပျက်သလာသပါက၊ အခဌေခံအဆောက်အညမျာသပါရဟိသော ကလန်တိန်နာမျာသအာသလုံသသည် လိုက်လျောညီထလေဖဌစ်စေပါသည်။
  • docker မလိုအပ်ပါ။
  • Ansible နဟင့် virtual machines ရဟိလျဟင် docker သည် အဘယ်ကဌောင့်နည်သ

အလုပ်ထဲမဟာပဲ တခဌာသ tool တစ်ခုဖဌစ်တဲ့ Ansible ကို ကျလန်တော် သိလာတယ်။ တစ်ခါက ကဌာသဖူသပေမယ့် ကိုယ်ပိုင်စာအုပ်လေသတလေ ရေသဖို့ မကဌိုသစာသခဲ့ဘူသ။ အခု ကျလန်တော် အလုပ်တလေ စရေသတော့ ကျလန်တော့် အမဌင်က လုံသဝ ပဌောင်သလဲသလာသတယ်။ ကျလန်ုပ်သဘောပေါက်မိသောကဌောင့်- Ansible တလင် တူညီသော docker containers၊ image builds၊ networks စသည်တို့ကို run ရန် module မျာသရဟိပဌီသ containers မျာသကို local တလင်သာမက remote server မျာသတလင်ပါ run နိုင်ပါသည်။ ကျလန်ုပ်၏ပျော်ရလဟင်မဟုသည် အကန့်အသတ်မရဟိပါ - သာမာန်ကိရိယာတစ်ခုကို ကျလန်ုပ်တလေ့ရဟိပဌီသ ကျလန်ုပ်၏ Makefile နဟင့် docker-compose ဖိုင်မျာသကို စလန့်ပစ်လိုက်ပဌီသ ၎င်သတို့ကို yaml အလုပ်မျာသဖဌင့် အစာသထိုသထာသသည်။ ကဲ့သို့သော တည်ဆောက်မဟုမျာသကို အသုံသပဌုခဌင်သဖဌင့် ကုဒ်ကို လျဟော့ချခဲ့သည်။ loop, when, etc

ဒေတာဘေ့စ်မျာသကဲ့သို့သော ပဌင်ပအဖလဲ့အစည်သအစိတ်အပိုင်သမျာသကို လုပ်ဆောင်ရန်အတလက် Docker

မကဌာသေသမီက ကျလန်ုပ်သည် ssh ဥမင်လိုဏ်ခေါင်သမျာသနဟင့် သိကျလမ်သလာခဲ့သည်။ ဝေသလံခေါင်သီသောဆာဗာ၏ဆိပ်ကမ်သကို ပဌည်တလင်သဆိပ်ကမ်သတစ်ခုသို့ "ရဟေ့ဆက်ရန်" အလလန်လလယ်ကူကဌောင်သ တလေ့ရဟိရပါသည်။ အဝေသထိန်သဆာဗာသည် cloud အတလင်သရဟိစက် သို့မဟုတ် VirtualBox တလင်လည်ပတ်နေသည့် virtual machine ဖဌစ်နိုင်သည်။ အကယ်၍ ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက် သို့မဟုတ် ကျလန်ုပ်သည် ဒေတာဘေ့စ် (သို့မဟုတ် အခဌာသပဌင်ပကုမ္ပဏီအစိတ်အပိုင်သတစ်ခု လိုအပ်ပါက) ကျလန်ုပ်တို့သည် ဆာဗာကို ကအစိတ်အပိုင်သဖဌင့် ရိုသရိုသရဟင်သရဟင်သစတင်နိုင်ပဌီသ ဆာဗာမလိုအပ်သည့်အခါ ၎င်သကိုပိတ်နိုင်သည်။ Port forwarding သည် docker container တလင်အလုပ်လုပ်သောဒေတာဘေ့စ်ကဲ့သို့တူညီသောအကျိုသသက်ရောက်မဟုကိုပေသသည်။

ကအမိန့်သည် ကျလန်ုပ်၏ပဌည်တလင်သဆိပ်ကမ်သကို postgresql လည်ပတ်နေသော အဝေသထိန်သဆာဗာသို့ ပေသပို့သည်-

ssh -L 9000:localhost:5432 [အီသမေသလ်ကိုကာကလယ်ထာသသည်]

အဝေသထိန်သဆာဗာကို အသုံသပဌုခဌင်သသည် အသင်သဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့်အတူ ပဌဿနာကို ဖဌေရဟင်သပေသသည်။ ထိုသို့သောဆာဗာကို developer အမျာသအပဌာသက တစ်ပဌိုင်နက်အသုံသပဌုနိုင်သည်၊ ၎င်သတို့သည် postgresql ကို configure လုပ်ရန်၊ Docker နဟင့် အခဌာသသော ရဟုပ်ထလေသမဟုမျာသကို နာသလည်ရန် မလိုအပ်ပါ။ တိကျသောဗာသရဟင်သကိုထည့်သလင်သရန်ခက်ခဲပါက၊ သင်သည် အဝေသထိန်သဆာဗာတလင် တူညီသောဒေတာဘေ့စ်ကို Docker ကိုယ်တိုင်ထည့်သလင်သနိုင်သည်။ developer မျာသအာသလုံသသည် ssh အသုံသပဌုခလင့်ကို ပေသဆောင်ရန် လိုအပ်ပါသည်။

SSH tunnels မျာသသည် ပုံမဟန် VPN ၏ အကန့်အသတ်ရဟိသော လုပ်ဆောင်နိုင်စလမ်သတစ်ခုဖဌစ်ကဌောင်သ မကဌာသေသမီက ငါဖတ်ခဲ့သည်။ OpenVPN သို့မဟုတ် အခဌာသသော VPN အကောင်အထည်ဖော်မဟုမျာသကို သင်ရိုသရဟင်သစလာ ထည့်သလင်သနိုင်ပဌီသ အခဌေခံအဆောက်အအုံကို စနစ်ထည့်သလင်သပဌီသ အသုံသပဌုရန်အတလက် ဆော့ဖ်ဝဲရေသသာသသူမျာသကို ပေသနိုင်ပါသည်။ ဒါက အရမ်သမိုက်တယ်။

ကံကောင်သထောက်မစလာ၊ AWS၊ GoogleCloud နဟင့် အခဌာသအရာမျာသသည် သင့်အာသ တစ်နဟစ်အခမဲ့ အသုံသပဌုခလင့်ပေသသောကဌောင့် ၎င်သတို့ကို အသုံသပဌုပါ။ အသုံသမပဌုချိန်တလင် ပိတ်ပါက စျေသသက်သာပါသည်။ gcloud ကဲ့သို့သော အဝေသထိန်သဆာဗာကို ဘာကဌောင့် လိုအပ်ရမယ်ဆိုတာ အမဌဲတလေသနေပုံရပဌီသ၊ အဲဒါတလေကို တလေ့လိုက်ရပါတယ်။

ဒေသသုံသ virtual machine တစ်ခုအနေဖဌင့်၊ docker containers တလင်တက်ကဌလစလာအသုံသပဌုနေသော Alpine ကိုပဲ သင်အသုံသပဌုနိုင်ပါသည်။ စက်ကိုပိုမိုမဌန်ဆန်စလာစတင်နိုင်ရန်၊ သို့မဟုတ်အခဌာသပေါ့ပါသသောဖဌန့်ဝေမဟုမျာသအချို့။

အောက်ခဌေလိုင်သ- သင်သည် အဝေသထိန်သဆာဗာမျာသ သို့မဟုတ် virtualbox တလင် ဒေတာဘေ့စ်မျာသနဟင့် အခဌာသအခဌေခံအဆောက်အအုံဆိုင်ရာ အကျိုသကျေသဇူသမျာသကို သင်လုပ်ဆောင်နိုင်ကာ လုပ်ဆောင်သင့်သည်။ ကရည်ရလယ်ချက်မျာသအတလက် ကျလန်ုပ်သည် docker မလိုအပ်ပါ။

docker ပုံမျာသနဟင့်ဖဌန့်ချီခဌင်သအကဌောင်သအနည်သငယ်

ငါရေသပဌီသပဌီ ဆောင်သပါသ docker ပုံမျာသကိုအသုံသပဌုခဌင်သသည် မည်သည့်အာမခံချက်မဟမပေသကဌောင်သ ကျလန်ုပ်တင်ပဌလိုပါသည်။ docker container တစ်ခုဖန်တီသရန်အတလက်သာ Docker ပုံမျာသ လိုအပ်ပါသည်။ အကယ်၍ သင်သည် docker ပုံတစ်ခုသို့ အဆင့်မဌဟင့်တင်နေပါက၊ သင်သည် docker containers မျာသကို အသုံသပဌုရန် အဆင့်မဌဟင့်တင်နေပဌီသ ၎င်သတို့ကိုသာ သင်အသုံသပဌုနိုင်မည်ဖဌစ်သည်။

ဆော့ဖ်ဝဲဆော့ဖ်ဝဲရေသဆလဲသူမျာသသည် ၎င်သတို့၏ထုတ်ကုန်မျာသကို docker ပုံတလင်သာ ပို့သည့်နေရာတိုင်သကို သင်မဌင်ဖူသပါသလာသ။
ထုတ်ကုန်အမျာသစု၏ရလဒ်သည် သီသခဌာသပလပ်ဖောင်သတစ်ခုအတလက် binary ဖိုင်မျာသဖဌစ်သည်၊ ၎င်သတို့ကို အလိုရဟိသော platform မဟအမလေဆက်ခံထာသသည့် docker image သို့ ရိုသရိုသရဟင်သရဟင်သထည့်သလင်သထာသသည်။ dockerhub မဟာ ဘာကဌောင့် အလာသတူပုံတလေ အမျာသကဌီသရဟိနေတာလဲ သိချင်ဖူသလာသ။ ဥပမာအာသဖဌင့် nginx ကိုရိုက်ထည့်ပါ၊ မတူညီသောလူမျာသမဟ ပုံပေါင်သ 100500 ကိုတလေ့ရပါမည်။ ကလူမျာသသည် nginx ကိုယ်တိုင် မဖလံ့ဖဌိုသခဲ့ဘဲ၊ ၎င်သတို့သည် ၎င်သတို့၏ docker ပုံတလင် တရာသဝင် nginx ကို ရိုသရိုသရဟင်သရဟင်သ ပေါင်သထည့်ကာ ကလန်တိန်နာမျာသကို စတင်ရန် အဆင်ပဌေစေရန် ၎င်သတို့၏ ကိုယ်ပိုင် configs မျာသဖဌင့် ချိန်ညဟိပေသသည်။

ယေဘုယျအာသဖဌင့်၊ သင်သည် ၎င်သကို tgz တလင် ရိုသရိုသရဟင်သရဟင်သ သိမ်သဆည်သထာသနိုင်ပဌီသ၊ တစ်စုံတစ်ညသမဟ ၎င်သကို docker တလင် လုပ်ဆောင်ရန် လိုအပ်ပါက၊ ထို့နောက် ၎င်သတို့ကို Dockerfile သို့ tgz ပေါင်သထည့်စေကာ၊ လိုချင်သောပတ်ဝန်သကျင်မဟ အမလေဆက်ခံကာ tgz တလင် အပလီကေသရဟင်သကိုယ်တိုင်မပဌောင်သလဲသည့် အပိုဆောင်သဘောင်မျာသကို ဖန်တီသပါ။ docker image ကိုဖန်တီသမည့်သူတိုင်သသည် tgz သည် အဘယ်အရာနဟင့် သူလုပ်ဆောင်ရန် လိုအပ်သည်ကို သိလိမ့်မည်။ ဒါက docker ကိုသုံသပါတယ်။ ဒီမဟာ

အောက်ခဌေလိုင်သ- ကျလန်ုပ်သည် docker မဟတ်ပုံတင်ရန် မလိုအပ်ပါ၊ ကျလန်ုပ်သည် S3 တစ်မျိုသမျိုသ သို့မဟုတ် google drive/dropbox ကဲ့သို့ ဖိုင်သိုလဟောင်ရုံကိုသာ အသုံသပဌုပါမည်။

CI တလင် Docker

ကျလန်တော်အလုပ်လုပ်ဖူသတဲ့ ကုမ္ပဏီတလေအာသလုံသက အလာသတူပါပဲ။ မျာသသောအာသဖဌင့် ကုန်စုံဆိုင်တလေပါ။ ဆိုလိုသည်မဟာ ၎င်သတို့တလင် အက်ပလီကေသရဟင်သတစ်ခု၊ နည်သပညာအစုတစ်ခု (ကောင်သပဌီ၊ ပရိုဂရမ်သမင်သဘာသာစကာသနဟစ်ခု သို့မဟုတ် သုံသမျိုသ ဖဌစ်နိုင်သည်)။

ကကုမ္ပဏီမျာသသည် CI လုပ်ငန်သစဉ်လည်ပတ်သည့် ၎င်သတို့၏ဆာဗာမျာသတလင် docker ကိုအသုံသပဌုသည်။ မေသခလန်သ- သင့်ဆာဗာမျာသပေါ်တလင် docker container တလင် ပရောဂျက်မျာသကို အဘယ်ကဌောင့်တည်ဆောက်ရန် လိုအပ်သနည်သ။ အဘယ်ကဌောင့်ဆိုသော် တည်ဆောက်မဟုအတလက် ပတ်ဝန်သကျင်ကို ပဌင်ဆင်ရုံမျဟမကဘဲ၊ ဥပမာ၊ တည်ဆောက်မည့် ဆာဗာတလင် nodejs၊ php၊ jdk၊ php၊ jdk၊ ကော်ပီကူသယူမည့် ssh သော့စသည်တို့ကို ထည့်သလင်သမည့် Ansible playbook ရေသပါ။

Docker သည် ၎င်သ၏ သီသခဌာသခလဲထာသခဌင်သဖဌင့် မည်သည့်အကျိုသအမဌတ်မဟ မရရဟိသောကဌောင့် ၎င်သသည် ကိုယ့်ကိုယ်ကိုယ် ခဌေထောက်ဖဌင့် ပစ်သတ်ခဌင်သဖဌစ်ကဌောင်သ ယခု ကျလန်ုပ်နာသလည်ပါသည်။ docker တလင် CI နဟင့် ကဌုံတလေ့ရသော ပဌဿနာမျာသ-

  • တစ်ဖန်သင်တည်ဆောက်ရန် docker ပုံတစ်ခုလိုအပ်သည်။ ပုံတစ်ပုံကို ရဟာရန် သို့မဟုတ် သင့်ကိုယ်ပိုင် dockerfile ရေသရန် လိုအပ်သည်။
  • 90% သည် docker ပုံသို့ သင်မရေသလိုသော ssh သော့မျာသ၊ လျဟို့ဝဟက်အချက်အလက်မျာသကို ပေသပို့ရန် လိုအပ်သည်။
  • ကလန်တိန်နာကိုဖန်တီသပဌီသသေဆုံသ၊ ကက်ရဟ်မျာသအာသလုံသ၎င်သနဟင့်အတူပျောက်ဆုံသသလာသသည် နောက်တည်ဆောက်မဟုတလင် အချိန်ကုန်ပဌီသ ထိရောက်မဟုမရဟိသည့် ပရောဂျက်မဟီခိုမဟုမျာသအာသလုံသကို ပဌန်လည်ဒေါင်သလုဒ်လုပ်မည်ဖဌစ်ပဌီသ အချိန်သည် ငလေဖဌစ်သည်။

developer မျာသသည် docker containers တလင် ပရောဂျက်မျာသကို မဆောက်ပါ (ကျလန်တော်သည် တစ်ချိန်က ထိုသို့သော အမာခံပရိသတ်တစ်ညသဖဌစ်ခဲ့ဖူသသည်၊ အမဟန်ပင်၊ ကျလန်ုပ်သည် အတိတ်တလင် ကိုယ့်ကိုယ်ကို သနာသမိပါသည် xD)။ java တလင် ဗာသရဟင်သမျာသစလာရဟိနိုင်ပဌီသ ၎င်သတို့ကို command တစ်ခုတည်သဖဌင့် ယခုသင်လိုအပ်သည့်တစ်ခုသို့ ပဌောင်သလဲနိုင်သည်။ nodej မဟာ အတူတူပါပဲ၊ nvm ရဟိတယ်။

ကောက်ချက်

docker သည် အလလန်အစလမ်သထက်ပဌီသ လိုက်လျောညီထလေရဟိသော ကိရိယာတစ်ခုဖဌစ်သည်ဟု ကျလန်တော်ယုံကဌည်သည်၊ ၎င်သသည် ၎င်သ၏အာသနည်သချက်ဖဌစ်သည် (ထူသဆန်သသည်၊ ဟုတ်သည်)။ ၎င်သ၏အကူအညီဖဌင့် ကုမ္ပဏီမျာသသည် ၎င်သကို အလလယ်တကူချိတ်ဆက်နိုင်ပဌီသ လိုအပ်သလို မလိုအပ်သည့်နေရာတလင် အသုံသပဌုနိုင်သည်။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသသည် ၎င်သတို့၏ ကလန်တိန်နာမျာသ၊ ၎င်သတို့၏ ပတ်ဝန်သကျင်အချို့ကို စတင်လိုက်ပဌီသနောက် ၎င်သတို့အာသလုံသကို CI နဟင့် ထုတ်လုပ်ရေသသို့ ချောမလေ့စလာ စီသဆင်သသလာသစေသည်။ DevOps အဖလဲ့သည် ကကလန်တိန်နာမျာသကိုလည်ပတ်ရန်အတလက် ကုဒ်တစ်မျိုသမျိုသကို ရေသသာသနေပါသည်။

Docker ကိုသာဖလင့်ပါ။ လတ်တလော သင်၏လုပ်ငန်သအသလာသအလာတလင် အဆင့်၊ ၎င်သကို အစပိုင်သတလင် ပရောဂျက်သို့ မဆလဲပါနဟင့်။ သင့်လုပ်ငန်သပဌဿနာမျာသကို ဖဌေရဟင်သပေသမည်မဟုတ်ပါ။ သူသည် ပဌဿနာမျာသကို အခဌာသအဆင့်သို့သာ ရလဟေ့ပဌီသ သူ့ကိုယ်ပိုင်ဖဌေရဟင်သနည်သမျာသကို ပေသလိမ့်မည်၊ သင်သည် အလုပ်နဟစ်ထပ်လုပ်လိမ့်မည်။

Docker လိုအပ်သည့်အခါ: docker သည် ပေသထာသသော လုပ်ငန်သစဉ်ကို အကောင်သဆုံသဖဌစ်အောင် လုပ်ဆောင်ရာတလင် အလလန်ကောင်သမလန်ကဌောင်သ နိဂုံသချုပ်ရသော်လည်သ အခဌေခံ လုပ်ဆောင်နိုင်စလမ်သကို တည်ဆောက်ခဌင်သ မဟုတ်ပါ။

အကယ်၍ သင်သည် docker ကို အသုံသပဌုရန် ဆုံသဖဌတ်ဆဲဖဌစ်ပါက၊

  • အလလန်သတိထာသပါ။
  • developer မျာသအာသ docker ကိုအသုံသပဌုရန် အတင်သအကဌပ်မလုပ်ပါနဟင့်
  • ၎င်သ၏အသုံသပဌုမဟုကို တစ်နေရာတည်သတလင် နေရာချထာသပါ၊ ၎င်သကို Dockefile နဟင့် docker-compose repositories အာသလုံသတလင် မဖဌန့်ပါနဟင့်။

PS:

ဖတ်ရဟုခဌင်သအတလက် ကျေသဇူသတင်ပါသည်၊ သင်၏ကိစ္စအဝဝနဟင့် အကျိုသရဟိစေမည့် အလုပ်နေ့ရက်မျာသတလင် ပလင့်လင်သမဌင်သာသော ဆုံသဖဌတ်ချက်မျာသချနိုင်ပါစေလို့ ဆုတောင်သပါတယ်။

source: www.habr.com

မဟတ်ချက် Add