docker သိုလဟောင်မဟု ရလဟေ့ပဌောင်သခဌင်သပဌဿနာ (docker အမဌစ်)

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

စတင်:

1. ကျလန်ုပ်တို့၏ အပလီကေသရဟင်သ၏ ကလန်တိန်နာအာသလုံသကို ရပ်ပဌီသ သတ်ပါ-

docker-compose down

ကလန်တိန်နာမျာသစလာရဟိပဌီသ ၎င်သတို့သည် မတူညီသော ပေါင်သစပ်မဟုမျာသတလင် ရဟိနေပါက၊ သင်သည် ကအရာကို လုပ်ဆောင်နိုင်သည်-

docker rm -f $(docker ps -q)

2. docker daemon ကို ရပ်လိုက်ပါ-

systemctl stop docker

3. လမ်သညလဟန်ကို အလိုရဟိသော တည်နေရာသို့ ရလဟေ့ပါ-

cp -r /var/lib/docker /docker/data/storage

4. လမ်သညလဟန်အသစ်တလင်ကဌည့်ရဟုရန် docker daemon အာသ ကျလန်ုပ်တို့ပဌောထာသသည်။ ရလေသချယ်စရာမျာသစလာရဟိသည်--g အလံကိုအသုံသပဌု၍ လမ်သကဌောင်သအသစ်တစ်ခုသို့ daemon ကိုညလဟန်ပဌရန် သို့မဟုတ် ကျလန်ုပ်တို့အသုံသပဌုခဲ့သည့် systemd configs ကိုအသုံသပဌုပါ။ သို့မဟုတ် သင်္ကေတတစ်ခု။ ဒီအကဌောင်သကို သိပ်အသေသစိတ် မပဌောတော့ပါဘူသ၊ အင်တာနက်မဟာ ရဟိနေတယ်။ အပဌည့် docker root ကို တည်နေရာအသစ်သို့ ရလဟေ့ခဌင်သဆိုင်ရာ လက်စလဲစာအုပ်မျာသ။

5. docker daemon ကို စတင်ပဌီသ မဟန်ကန်သော နေရာတလင် ရဟိနေကဌောင်သ သေချာပါစေ။

systemctl status docker

အထလက်လိုင်သမျာသထဲမဟ တစ်ခုကို ကျလန်ုပ်တို့ မဌင်သင့်သည်-

├─19493 /usr/bin/dockerd --data-root=/docker/data/storage

ရလေသချယ်ခလင့်ကို daemon သို့ လလဟဲပဌောင်သထာသကဌောင်သ သေချာအောင် ပဌုလုပ်ထာသပဌီသ၊ ၎င်သကို အသုံသပဌုခဌင်သ ရဟိ၊ မရဟိ စစ်ဆေသကဌည့်ကဌပါစို့။ (ကျေသဇူသတင်ပါတယ် inkvizitor68sl)!

docker info | awk '/Root Dir/ {print $NF}' 

6. ကျလန်ုပ်တို့၏လျဟောက်လလဟာကို စတင်ကဌပါစို့။

docker-compose up -d

7. စစ်ဆေသပါ။

ကတလင် ပျော်ရလဟင်မဟုစတင်သည်၊ DBMS၊ MQ၊ အာသလုံသအဆင်ပဌေပါသည်။ ဒေတာဘေ့စ်က နဂိုအတိုင်သပါပဲ၊ nginx ကလလဲရင် အရာအာသလုံသ အဆင်ပဌေပါတယ်။ ကျလန်ုပ်တို့တလင် Kerberos နဟင့် courtesans တို့နဟင့်အတူ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် nginx တည်ဆောက်မဟုရဟိသည်။ ကလန်တိန်နာမဟတ်တမ်သမျာသကိုကဌည့်ရဟုခဌင်သနဟင့် /var/tmp - ခလင့်ပဌုချက်ငဌင်သပယ်ခံရကဌောင်သဖော်ပဌသည်။ ကျလန်တော့်ပုခုံသတလေကို လက်ချောင်သတလေနဲ့ ဆုပ်နယ်ပဌီသ အခဌေအနေကို ခလဲခဌမ်သစိတ်ဖဌာဖို့ ကဌိုသစာသတယ်... ဒါက ဘယ်လိုဖဌစ်နိုင်လဲ။ Docker ပုံသည် ပဌောင်သလဲခဌင်သမရဟိပါ။ လမ်သညလဟန်ကို ရလဟေ့လိုက်ရုံပါပဲ။ အဲဒါက အမဌဲတမ်သ အလုပ်ဖဌစ်တယ်၊ ဒါက မင်သအတလက်ပဲ... စမ်သသပ်မဟုအတလက်၊ ငါလက်နဲ့ ကလန်တိန်နာထဲကို ဝင်သလာသပဌီသ ဒီလမ်သညလဟန်ကို လုပ်ပိုင်ခလင့်တလေ ပဌောင်သခဲ့တယ်၊ root 755, ပေသသည် root 777. အရာအာသလုံသကစတော့တယ်... ခေါင်သထဲမဟာ အတလေသတစ်ခုဝင်လာတယ် - အဓိပ္ပါယ်မဲ့တဲ့... တစ်ခုခုကို ထည့်မတလက်မိဘူသထင်တယ်...။

လလဟဲပဌောင်သမဟုအတလင်သ ဖိုင်မျာသသို့ ဝင်ရောက်ခလင့်ကို ကျလန်ုပ်တို့ နဟစ်သက်သဘောကျကဌောင်သ ဆုံသဖဌတ်ခဲ့သည်။ ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သ၊ docker daemon သည် လမ်သညလဟန်အသစ်ကို ဖျက်လိုက်ပဌီသ /var/lib/docker directory ကိုအသုံသပဌု၍ ကူသယူပါသည်။ rsync -a.

အာသလုံသအဆင်ပဌေနေပဌီလို့ထင်ပါတယ်၊ Docker လျဟောက်လလဟာကိုတင်လိုက်ကဌရအောင်။

အင်သ... ပဌဿနာက ကျန်သေသတယ်... မျက်လုံသတလေ မဟိတ်သလာသတယ်။ အမျိုသမျိုသသောစမ်သသပ်မဟုမျာသလုပ်ဆောင်ရာ၊ ကျလန်ုပ်သည်က nginx ပုံရဟိ၍ ကလန်တိန်နာအတလင်သသို့တက်သလာသပဌီသ /var/tmp directory အတလက်အခလင့်အရေသမျာသမဟာ root၊ root 777 ဖဌစ်သည်။ ဆိုလိုသည်မဟာ၊ ကျလန်တော် ကိုယ်တိုင် သတ်မဟတ် ထာသ တဲ့ အတိုင်သပါပဲ။ ဒါပေမယ့် ပုံတလေက ထပ်တူပါပဲ။

xfs ဖိုင်စနစ်ကို နေရာတိုင်သတလင် အသုံသပဌုခဲ့သည်။

Command နဲ့ နဟိုင်သလိုက်တာ

docker inspect my-nginx:12345

hash မျာသအာသလုံသသည် တူညီပဌီသ၊ တစ်ခုမဟ တစ်ခုသို့ ဖဌစ်သည်။ ဆာဗာပေါ်တလင်ရော ကျလန်ုပ်၏ virtual machine တလင်ရော။ ကျလန်ုပ်သည် local nginx ပုံကိုဖျက်လိုက်ပဌီသ အကဌောင်သအမျိုသမျိုသကဌောင့် စက်တစ်ခုတည်သတလင်ရဟိသော registry မဟ ထပ်မံဆလဲထုတ်လိုက်ပါသည်။ ပဌဿနာက အတူတူပါပဲ... အခု ကျလန်မရဲ့ ဒုတိယမျက်လုံသက လဟုပ်နေတယ်။

"AAAAAAAAA" နဲ့ တခဌာသအရာတလေကို အော်နေရုံကလလဲလို့ ခေါင်သထဲမဟာ ဘာအတလေသတလေရဟိနေလဲ မမဟတ်မိတော့ဘူသ။ နံနက် ၄ နာရီအချိန်ဖဌစ်ပဌီသ ပုံအလလဟာမျာသကို ဟက်ခဌင်သ၏နိယာမကို နာသလည်ရန် Docker အရင်သအမဌစ်ကုဒ်ကို အသုံသပဌုခဲ့သည်။ တတိယမဌောက် အာသဖဌည့်အချိုရည်ဗူသကို ဖလင့်လိုက်သည်။ အဆုံသတလင် hashing သည် ဖိုင်၊ ၎င်သ၏ အကဌောင်သအရာမျာသကိုသာ ထည့်သလင်သစဉ်သစာသသော်လည်သ၊ ဝင်ရောက်ခလင့်မရဟိပါ။! ဆိုလိုသည်မဟာ လျဟို့ဝဟက်ဆန်သကဌယ်သောနည်သဖဌင့် ကျလန်ုပ်တို့၏အခလင့်အရေသမျာသ ဆုံသရဟုံသသလာသသည်၊ selinux ကိုပိတ်ထာသသည်၊ acl ကိုအသုံသမပဌုဘဲ၊ စေသကပ်မဟုမရဟိပါ။

ကျလန်ုပ်သည် စက်တလင်သပုံအာသ ဖျက်လိုက်သည်၊ ဓါတ်ပုံကို docker registry မဟလည်သ ဖျက်ပဌီသ ထပ်မံတလန်သလဟန်လိုက်ပါသည်။ ပဌီသတော့ အရာအာသလုံသ ပဌီသသလာသတယ်။ လလဟဲပဌောင်သမဟုအတလင်သ၊ ဒေသန္တရပုံအတလင်သနဟင့် မဟတ်ပုံတင်စာရင်သတလင် လဲနေသည့်ပုံအတလင်သပိုင်သ နဟစ်ခုစလုံသ၏ အခလင့်အရေသမျာသ ဆုံသရဟုံသသလာသကဌောင်သ တလေ့ရဟိရသည်။ ကျလန်တော်ပဌောခဲ့သလိုပဲ အကဌောင်သအမျိုသမျိုသကဌောင့် တူညီတဲ့ကာသပေါ်မဟာ တည်ရဟိခဲ့ပါတယ်။ ရလဒ်အနေဖဌင့် /var/lib/docker directory တစ်ခုတလင်။

၎င်သတို့သည် docker ၏အကဌည့်ကို လမ်သညလဟန်အဟောင်သသို့ ပဌန်သလာသရန် ကဌိုသပမ်သခဌင်သရဟိမရဟိ မေသခလန်သကို ကဌိုတလေသကာ - မဟုတ်ဘူသ၊ သူတို့ မကဌိုသစာသခဲ့ဘူသ ဖဌစ်ချင်တော့ အခဌေအနေတလေက ခလင့်မပဌုပါဘူသ။ ဟုတ်တယ်၊ ငါ အဲဒါကို ဖော်ထုတ်ချင်ခဲ့တာ။

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

ရလဒ်- ကျလန်တော် ပဌဿနာကို ဖဌေရဟင်သပဌီသ အကဌောင်သရင်သကို နာသမလည်သေသပါ =(

ဒီပဌဿနာရဲ့ ဖဌစ်နိုင်ခဌေ အကဌောင်သရင်သတလေကို တစ်စုံတစ်ယောက်က သိတယ်၊ မဟန်သဆလို့ရဟိရင်၊ မင်သဆီက comment မဟာ ကဌာသရတာ အရမ်သဝမ်သသာတယ်။

source: www.habr.com

မဟတ်ချက် Add