BuildKit - အရာအားလုံးနီးပါးကိုတည်ဆောက်နိုင်သော Docker ၏ဝှက်ထားသောကျောက်မျက်
မှတ်ချက်များ
Mewayz Team
Editorial Team
BuildKit- အရာအားလုံးနီးပါးကို တည်ဆောက်နိုင်သော Docker ၏ ဝှက်ထားသော ကျောက်မျက်ရတနာ
ဆော့ဖ်ဝဲလ်တင်ပို့ပုံအား ပြောင်းလဲစေသည့် ကွန်တိန်နာ runtime အဖြစ် ဆော့ဖ်ဝဲရေးသားသူအများစုက Docker ကို သိကြသည်။ ခေတ်မီ Docker တည်ဆောက်မှုတိုင်း၏ မျက်နှာပြင်အောက်တွင် တိတ်တဆိတ် ဆူနေသည့် အင်ဂျင်အကြောင်း သိသူနည်းပါးသည် — BuildKit၊ ဗားရှင်း 18.09 ကတည်းက Docker နှင့် ပို့ဆောင်ပေးသည့် မျိုးဆက်သစ် တည်ဆောက်မှုစနစ်ဖြစ်ပြီး Docker 23.0 တွင် မူရင်းနောက်ကွယ်မှ ဖြစ်လာခဲ့သည်။ အင်ဂျင်နီယာများသည် Kubernetes ဖွဲ့စည်းမှုပုံစံများနှင့် အသေးစားဝန်ဆောင်မှုပုံစံများအကြောင်း အဆုံးမရှိငြင်းခုံနေကြသော်လည်း BuildKit သည် DevOps ဂေဟစနစ်ရှိ အစွမ်းထက်ဆုံး၊ လိုက်လျောညီထွေရှိသော တည်ဆောက်မှုစနစ်များထဲမှ တစ်ခုအဖြစ်သို့ ဆက်တိုက်ပြောင်းလဲနေသည်။ အကယ်၍ သင်သည် ၎င်းအား ပိုမိုမြန်ဆန်သော docker build တစ်ခုအဖြစ် သဘောထားပါက၊ သင်သည် ကြီးမားသောစွမ်းရည်ကို စားပွဲပေါ်တွင် ချန်ထားမည်ဖြစ်သည်။ မြင့်မားသော CI/CD ပိုက်လိုင်းများ လည်ပတ်နေသည့် ကုမ္ပဏီများသည် BuildKit အမှန်တကယ် ပေးဆောင်သည်များကို နားလည်ခြင်းဖြင့် တည်ဆောက်ချိန်ကို 50-70% လျှော့ချလိုက်သည် —၊ ၎င်းသည် အစသာဖြစ်သည်။
BuildKit ကို Classic Builder နှင့် အခြေခံအားဖြင့် ကွဲပြားစေသောအရာ
မူရင်း Docker build engine သည် Dockerfile ညွှန်ကြားချက်များကို တစ်ချိန်တည်းတွင် အလွှာတစ်ခုစီ ဆက်တိုက်လုပ်ဆောင်ပြီး မည်သည့်အလုပ်သည် ဘေးကင်းစွာ ပြိုင်တူဖြစ်သွားနိုင်သည်ကို သတိမထားမိဘဲ လုပ်ဆောင်ခဲ့သည်။ BuildKit သည် ထိုမျဉ်းအတိုင်း အကောင်အထည်ဖော်မှုပုံစံကို ညွှန်ကြားထားသည့် acyclic ဂရပ်ဖစ် (DAG) ဖြင့် အစားထိုးသည် — တည်ဆောက်ပုံအဆင့်ဆင့်သည် တစ်ခုနှင့်တစ်ခု အားကိုးနေပြီး မည်သည့်အရာမဟုတ်သည်ကို နားလည်နိုင်သော မှီခိုဂရပ်တစ်ခုဖြစ်သည်။ အမှီအခိုကင်းသော အဆင့်များသည် တစ်ပြိုင်နက်တည်း လုပ်ဆောင်သည်၊ အသုံးမပြုသော အဆင့်များကို လုံးလုံးလျားလျား ကျော်သွားကာ တည်ဆောက်မှု တစ်ခုလုံးသည် သင် မှန်ကန်သော အစီအစဥ်အတိုင်း ရွတ်ဆိုရမည့် အဆင့်များထက် သင်အလိုရှိသောအရာကို သရုပ်ဖော်ပြချက် ဖြစ်လာပါသည်။
ဤဗိသုကာပြောင်းလဲမှုသည် အရှိန်လွန်သွားသော လက်တွေ့ကျသော အကျိုးဆက်များရှိသည်။ Multi-stage Dockerfile သည် အဆင့်တစ်ခုတွင် Go binary တစ်ခုကို စုစည်းပြီး အခြားတစ်ခုတွင် Node.js မှီခိုမှုကို ဒေါင်းလုဒ်လုပ်ကာ တတိယတစ်ခုတွင် ထုတ်လုပ်မှုပုံတစ်ပုံကို စုစည်းသည့်အခါ BuildKit သည် ပထမအဆင့်နှစ်ခုကို တစ်ပြိုင်နက် လုပ်ဆောင်နိုင်သည်။ အားကောင်းသော CI အပြေးသမားအတွက် ယခင်က လေးမိနစ်ခန့် အချိန်ယူခဲ့သော တည်ဆောက်မှုတစ်ခုသည် ယခုအခါ စက္ကန့်ကိုးဆယ်အတွင်း ပြီးမြောက်ပါသည်။ Stripe၊ Shopify နှင့် အခြားအဆင့်မြင့်အင်ဂျင်နီယာအဖွဲ့များ၏ ရမှတ်များသည် ၎င်းတို့၏အတွင်းပိုင်းကိရိယာနောက်ကြောင်းပြန်ခြင်းတွင် အလားတူအကျိုးအမြတ်များကို မှတ်တမ်းတင်ထားသည်။ DAG မော်ဒယ်သည် BuildKit သည် အလွန်တိကျသော တည်ဆောက်မှု မက်တာဒေတာကို ထုတ်ပေးနိုင်သည် — သက်သေအထောက်အထား အထောက်အထားများနှင့် ဆော့ဖ်ဝဲဘေလ် (SBOM) မျိုးဆက်များကဲ့သို့သော အင်္ဂါရပ်များအတွက် အခြေခံအချက်အနေဖြင့် ထောက်ပံ့ရေးကွင်းဆက်လုံခြုံရေးအတွက် အလွန်အရေးကြီးပါသည်။
cache invalidation အလုပ်လုပ်ပုံတွင်လည်း သဘောတရားပြောင်းသွားပါသည်။ classic builder သည် ပြောင်းလဲထားသော ညွှန်ကြားချက်များအောက်တွင် အလွှာတိုင်းကို အကျုံးမဝင်ပါ။ BuildKit သည် ထည့်သွင်းမှုတစ်ခုစီတွင် အကြောင်းအရာ hash များကို ခြေရာခံသည်၊ ထို့ကြောင့် Dockerfile တွင် မှတ်ချက်တစ်ခုပြောင်းခြင်းသည် မိနစ်သုံးဆယ်စုစည်းမှုကိုကိုယ်စားပြုသည့် ကက်ရှ်ထည့်သွင်းမှုကို မထိခိုက်စေပါ။ သင့်အင်ဂျင်နီယာအဖွဲ့အတွက် ငါးမိနစ်နှင့် မိနစ်လေးဆယ်ကြာ တုံ့ပြန်ချက်လှည့်ကွက်ကြား ခြားနားချက်မှာ သင်၏တည်ဆောက်မှု ကက်ရှ်သည် ကနဦးထင်ထားသည်ထက် ပိုအရေးကြီးပါသည်။
Multi-Platform Builds- Command တစ်ခု၊ Architecture တစ်ခုစီ
BuildKit ၏ --platform အလံနှင့် QEMU ပေါင်းစည်းမှုသည် တစ်ချိန်က နာကျင်စရာကောင်းသော စနစ်ပေါင်းစုံညှိနှိုင်းမှုပြဿနာကို အမိန့်တစ်ခုတည်းအဖြစ်သို့ ပြောင်းလဲစေသည်။ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 ကို လုပ်ဆောင်နေသည်။ သည် တည်ဆောက်မှု တောင်းခံမှုတစ်ခုမှ အပြိုင် ထုတ်လုပ်မှု အဆင်သင့် ရုပ်ပုံ သုံးခုကို ထုတ်လုပ်သည်။ လုပ်ငန်းနယ်ပယ်သည် ARM ဆီသို့ ကူးပြောင်းလာသည် — AWS Graviton3 ဖြစ်ရပ်များသည် ဝဘ်ဝန်ဆောင်မှုပေးခြင်းနှင့် ဒေတာလုပ်ဆောင်ခြင်းကဲ့သို့သော အလုပ်များပေါ်တွင် 40% ပိုမိုကောင်းမွန်သောစျေးနှုန်းစွမ်းဆောင်ရည်ကို တသမတ်တည်း ပေးစွမ်းနိုင်ပြီး Apple Silicon မှ ARM သည် သန်းပေါင်းများစွာသော အင်ဂျင်နီယာများအတွက် မူရင်းဖွံ့ဖြိုးတိုးတက်ရေးစက်အဖြစ် သတ်မှတ်ပေးထားသည်။
BuildKit ၏ Multi-platform ပံ့ပိုးမှု မရင့်ကျက်မီ၊ မတူညီသော ဗိသုကာလက်ရာများအတွက် သီးခြားတည်ဆောက်ထားသော ပိုက်လိုင်းများကို ထိန်းသိမ်းခြင်းသည် အမှန်တကယ် ကုန်ကျစရိတ်စင်တာတစ်ခုဖြစ်သည်။ အဖွဲ့များသည် Dockerfiles အများအပြားကို ထိန်းသိမ်းထားပြီး မတူညီသောပုံစံတည်ဆောက်ထားသော အပြေးသမားများထံ သီးခြား CI ပိုက်လိုင်းများ သွယ်တန်းခြင်း သို့မဟုတ် နေရာတိုင်းတွင် x86 ပုံများကို ရိုးရှင်းစွာ ပို့ဆောင်ပြီး ARM အခြေခံအဆောက်အအုံအတွက် စွမ်းဆောင်ရည်ပြစ်ဒဏ်ကို ပေးဆောင်သည်။ BuildKit ဖြင့်၊ သင်သည် သင်၏တည်ဆောက်မှုကို တစ်ကြိမ်သတ်မှတ်ပြီး စနစ်သည် ဗိသုကာဆိုင်ရာ သီးသန့်စုစည်းမှုကို ပွင့်လင်းမြင်သာစွာ ကိုင်တွယ်ခွင့်ပြုသည်။ အပြန်အလှန်စုစည်းမှုလိုအပ်သော သံချေးတက်သည့်ပရောဂျက်များ၊ CGO မှီခိုမှုရှိသော Go ပရောဂျက်များ၊ C တိုးချဲ့မှုများပါရှိသော Python ပက်ကေ့ဂျ်များ — BuildKit သည် ပစ်မှတ်ပလက်ဖောင်းတစ်ခုစီ၏အသေးစိတ်အချက်အလက်များကို နားလည်ရန်မလိုအပ်ဘဲ အတုအယောင်အလွှာကို ကိုင်တွယ်သည်။
ဤနေရာတွင် လက်တွေ့ကျသော စီးပွားရေးတန်ဖိုးကို တိုင်းတာနိုင်သည်။ AWS Graviton instances တွင် ကွန်တိန်နာ 200 ကိုအသုံးပြုသည့်အဖွဲ့သည် vCPU-hour တစ်နာရီလျှင် $0.04 ဖြင့် လုပ်ဆောင်နေသည့်အဖွဲ့သည် မှန်ကန်သောဗိသုကာတစ်ခုလျှင် $0.056 နှင့်ညီမျှသော x86 instance နှင့် vCPU-hour 100 တစ်ခုလျှင် နှစ်စဉ် $11,520 ခန့်သက်သာသည် — မှန်ကန်သောဗိသုကာပညာကိုရွေးချယ်ခြင်းမှသက်သက်ဖြစ်သည်။ ပြန်လည် အင်ဂျင်နီယာ ကြိုးပမ်းမှု မပါဘဲ ထိုရွေးချယ်မှုကို လက်လှမ်းမီနိုင်စေရန် ပြုလုပ်ခြင်းသည် ၎င်းကိုယ်တိုင် ချက်ချင်း ပေးဆောင်သည့် အခြေခံ အဆောက်အအုံ ပိုမိုကောင်းမွန်အောင် လုပ်ဆောင်ခြင်း အမျိုးအစား ဖြစ်သည်။
ရုပ်ပုံအလွှာများသို့ မပေါက်ကြားဘဲ လျှို့ဝှက်စီမံခန့်ခွဲမှု
တန်ဖိုးနည်း BuildKit အင်္ဂါရပ်များထဲမှ တစ်ခုမှာ ၎င်း၏ လျှို့ဝှက်ချက် API ဖြစ်သည်။ ဂန္ထဝင် Docker တည်ဆောက်သူသည် ရုပ်ပုံအလွှာတစ်ခုတွင် အဆုံးသတ်နိုင်သည့် အထောက်အထားများမပါဘဲ တည်ဆောက်မှုတစ်ခုသို့ အထောက်အထားများပေးပို့ရန် သန့်ရှင်းသောနည်းလမ်းမရှိပါ။ ဆော့ဖ်ဝဲရေးသားသူများသည် အဆင့်ပေါင်းများစွာ တည်ဆောက်မှုများ၊ ARG ညွှန်ကြားချက်များနှင့် ဂရုတစိုက် မှာယူမှုများဖြင့် လုပ်ဆောင်ခဲ့သည် — သို့သော် API သော့ သို့မဟုတ် သီးသန့် SSH သော့ကို တင်ပို့လိုက်သည့်ပုံသို့ မတော်တဆ ဖုတ်မိခြင်း၏အန္တရာယ်မှာ မသက်မသာ မြင့်မားနေဆဲဖြစ်သည်။ လုံခြုံရေးစကန်ဖတ်စက်များသည် အများသူငှာ မှတ်ပုံတင်ထားသော ပုံများတွင် ခဲကုဒ်လုပ်ထားသော အထောက်အထားများကို ပုံမှန်ရှာဖွေလေ့ရှိပြီး ထိုပေါက်ကြားမှုအများစုသည် တည်ဆောက်နေစဉ်အတွင်း လျှို့ဝှက်စွာကိုင်တွယ်ခြင်းဆီသို့ တိုက်ရိုက်ခြေရာခံသည်။
BuildKit ၏ --secret အလံသည် လိုအပ်ပြီး မည်သည့်ပုံအလွှာကိုမျှ မထိဘဲ မည်သည့်ပုံအလွှာကိုမျှ မထိဘဲ တည်ရှိနေသည့် ယာယီဖိုင်စနစ်လမ်းကြောင်းတစ်ခုအဖြစ် တည်ဆောက်သည့် ပတ်ဝန်းကျင်တွင် အကဲဆတ်သောဒေတာကို တပ်ဆင်ထားသည်။ RUN --mount=type=secret,id=npmrc cat /run/secrets/npmrc > ~/.npmrc && npm ထည့်သွင်းခြင်း ကဲ့သို့သော Dockerfile လမ်းညွှန်ချက်သည် နောက်ဆုံးပုံ သို့မဟုတ် အလယ်အလတ်အလွှာတွင် မည်သည့်အထောက်အထားမှ မပေါ်ဘဲ သီးသန့် npm အထောက်အထားများကို အသုံးပြုခွင့်ပေးသည်။ တူညီသောပုံစံသည် PyPI အထောက်အထားများ၊ Maven ဆက်တင်များ၊ သီးသန့် Git သိုလှောင်မှုများအတွက် SSH သော့များနှင့် သင့်တည်ဆောက်မှုလုပ်ငန်းစဉ်တွင် လိုအပ်သည့် အရေးကြီးသော အခြားအရာများအတွက် အလုပ်လုပ်ပါသည်။
ထိန်းချုပ်ထားသောစက်မှုလုပ်ငန်းများကိုထိသောဆော့ဖ်ဝဲတည်ဆောက်ရေးအဖွဲ့များ — ကျန်းမာရေးစောင့်ရှောက်မှုပလပ်ဖောင်းများ၊ fintech ထုတ်ကုန်များ၊ HR ဆော့ဖ်ဝဲ— "အထောက်အထားများသည် ပုံထဲတွင်ရှိနိုင်သည်" နှင့် "အထောက်အထားများသည် ပုံတွင်မဖြစ်နိုင်" အကြားခြားနားချက်မှာ လုံခြုံရေးစစ်ဆေးမှုကိုကျော်ဖြတ်ခြင်းနှင့် တွေ့ရှိချက်များကို ပြန်လည်ပြုပြင်ခြင်းအတွက် သုံးပတ်ကြာခြင်းကြား ကွာခြားချက်ဖြစ်သည်။ လုပ်ခလစာ၊ HR နှင့် ငွေတောင်းခံလွှာများကဲ့သို့ လုပ်ငန်းများတွင် အသုံးပြုသူ 138,000 ကျော်အတွက် လုပ်ငန်းလည်ပတ်မှုကို အားကောင်းစေသည့် Mewayz ကဲ့သို့သော ပလပ်ဖောင်းများသည် ၎င်းတို့၏ ဖောက်သည်များ၏ အရေးကြီးသော ငွေကြေးနှင့် ပုဂ္ဂိုလ်ရေးဆိုင်ရာ အချက်အလက်များကို ၎င်းတို့၏ အရေးကြီးသော ငွေကြေးနှင့် ပုဂ္ဂိုလ်ရေးဆိုင်ရာ အချက်အလက်များကို ထိန်းသိမ်းရန် ဤကဲ့သို့ သက်သေပြနိုင်သော လုံခြုံရေးပုံစံပေါ်တွင် မူတည်ပါသည်။
ကက်ရှ် တင်ပို့မှုများ- CI ပိုက်လိုင်းများ အမှန်တကယ် မြန်ဆန်အောင် ပြုလုပ်ခြင်း
CI ပိုက်လိုင်းများသည် တည်ဆောက်မှုစွမ်းဆောင်ရည်တွင် အရေးကြီးဆုံးဖြစ်ပြီး မူရင်း Docker တည်ဆောက်မှုအတွေ့အကြုံသည် သမိုင်းတွင် အနာကျင်ဆုံးဖြစ်ခဲ့သည့် နေရာဖြစ်သည်။ လတ်ဆတ်သော CI အပြေးသမားများသည် ပုံမှန်အားဖြင့် ဗလာကက်ရှ်များဖြင့် စတင်သည်၊ ဆိုလိုသည်မှာ ပိုက်လိုင်းလည်ပတ်မှုတိုင်းသည် အရာအားလုံးကို အစမှပြန်လည်စုစည်းသည်။ Maven မှီခိုမှုရာနှင့်ချီရှိသော Java ဝန်ဆောင်မှုတစ်ခုအတွက်၊ Rust ပရောဂျက်တစ်ခု သို့မဟုတ် လေးလံသော မူရင်း extension များပါရှိသော Python အပလီကေးရှင်းတစ်ခုအတွက်၊ ၎င်းသည် စက္ကန့်ထက် မိနစ်ဆယ်ဂဏန်းအတွင်း တိုင်းတာသည့် တည်ဆောက်ချိန်ကို ဆိုလိုသည်။ နှေးကွေးသော CI ၏ လုပ်ငန်းကုန်ကျစရိတ်သည် ကြီးမားသည် — လျှော့ချထားသော ဖြန့်ကျက်မှုအကြိမ်ရေ၊ ပိုမိုကြာရှည်သော တုံ့ပြန်မှု loops များနှင့် ပိုက်လိုင်းများ ပြီးအောင်မလုပ်ဖို့ စောင့်ဆိုင်းနေသော အင်ဂျင်နီယာများ မလှုပ်မယှက်ထိုင်နေပြီး ပိုက်လိုင်းများ ပေါင်းစည်းကာ ရှေ့ဆက်မသွားနိုင်ပါ။
BuildKit ၏ ကက်ရှ် ထုတ်ယူမှု အင်္ဂါရပ်သည် ၎င်းကို ထုတ်ယူနိုင်သော ကက်ရှ်မန်နီးဖက်စ်များဖြင့် ဖြေရှင်းပေးသည်။ --cache-to type=registry,ref=myregistry/myapp:cache နှင့် --cache-from type=registry,ref=myregistry/myapp:cache ကိုအသုံးပြု၍ BuildKit သည် တည်ဆောက်မှုတစ်ခုစီပြီးနောက် အသေးစိတ် cache snapshot တစ်ခုကို registry တစ်ခုသို့ တွန်းပို့ပေးပြီး နောက်တစ်ခု၏ အစတွင် ၎င်းကို ဆွဲထုတ်ပါသည်။ ကက်ရှ်သည် အကြောင်းအရာ-ဖြေရှင်းထားသောကြောင့် စစ်မှန်သော ပြောင်းလဲထားသော အလွှာများကိုသာ ပြန်လည်ရယူမည်ဖြစ်သည်။ GitHub လုပ်ဆောင်ချက်များ၊ GitLab CI နှင့် CircleCI တို့တွင် ဤပုံစံကို အသုံးပြုထားသော အဖွဲ့များသည် ပိုက်လိုင်းအကြိမ်ရေ ဆယ့်ငါးမိနစ်မှ သုံးပုံအောက်သို့ ပိုက်လိုင်းကို ပုံမှန်ဖြတ်ကြသည်။ GitHub ၏အဆင့်မြင့် Docker တည်ဆောက်မှုလုပ်ငန်းအသွားအလာများဆိုင်ရာ GitHub ၏ကိုယ်ပိုင်စာရွက်စာတမ်းသည် ဤအကြောင်းပြချက်အတွက် ဤပုံစံကို အတိအကျအကြံပြုထားသည်။
အမြန်ဆုံးတည်ဆောက်မှုသည် သင်ဘယ်တော့မှ ထပ်မလည်ပတ်စရာ မလိုတော့ပါ။ BuildKit ၏ အလွှာလိုက်၊ အကြောင်းအရာ-လိပ်စာဖော်ပြသော ကက်ရှ်စနစ်သည် တည်ဆောက်မှုများကို အရှိန်မြှင့်ရုံသာမကဘဲ၊ ၎င်းသည် "build" ၏ သဘောတရားတစ်ခုလုံးကို ပိုမိုထက်မြက်စေကာ ထပ်ခါတလဲလဲ စုစည်းမှုကို အတိအကျ ပြောင်းလဲသွားသည့် တိုးမြင့်ကွဲပြားမှုအဖြစ် ပြောင်းလဲသွားစေသည်။
ကက်ရှ်ပို့ကုန်များသည် ဌာနခွဲအခြေပြု ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းအသွားအလာများနှင့် ရှင်းရှင်းလင်းလင်း ပေါင်းစပ်ထားသည်။ အကိုင်းအခက် ကက်ရှ်မရှိသောအခါတွင် သင်၏ CI ပိုက်လိုင်းကို ဌာနခွဲအလိုက် သီးခြား ကက်ရှ်တစ်ခုမှ ပင်မအကိုင်းအခက် ကက်ရှ်သို့ ပြန်လည်ရောက်ရှိစေရန် ပြင်ဆင်သတ်မှတ်နိုင်သည်၊ ဆိုလိုသည်မှာ သင်၏ပင်မဖွံ့ဖြိုးရေးလိုင်းမှ စုဆောင်းထားသော နွေးထွေးသော ကက်ရှ်မှ အကိုင်းအခက်အသစ်များ ချက်ခြင်းအကျိုးခံစားရမည်ဖြစ်သည်။ အင်ဂျင်နီယာများသည် အအေးဒဏ်ကို စောင့်ဆိုင်းရမည့်အစား ၎င်းတို့၏ ပထမဆုံးဌာနခွဲအသစ်တွင် ကတိကဝတ်ပြုမှုမှ လျင်မြန်သော တုံ့ပြန်ချက်ကို ရရှိသည်။
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →BuildKit Frontends- Dockerfiles ကိုကျော်လွန်တည်ဆောက်ခြင်း
BuildKit ၏ လူသိနည်းသောစွမ်းရည်ဖြစ်ကောင်းဖြစ်နိုင်သည်မှာ Dockerfiles သည် ဖြစ်နိုင်ချေရှိသော ထည့်သွင်းဖော်မတ်တစ်ခုသာဖြစ်သည် — တစ်ခုတည်းမဟုတ်ပေ။ BuildKit တွင် စိတ်ကြိုက်တည်ဆောက်နိုင်သော အဓိပ္ပါယ်ဖွင့်ဆိုချက်ဘာသာစကားများနှင့် ဖော်မတ်များကို လုံးလုံးလျားလျားခွင့်ပြုနိုင်သည့် pluggable frontend ဗိသုကာတစ်ခုရှိသည်။ ရှေ့တန်းကို သင်၏တည်ဆောက်ဖိုင်၏ထိပ်ရှိ # syntax= ညွှန်ကြားချက်ဖြင့် သတ်မှတ်ထားသည်၊ ၎င်းသည် BuildKit ၏ရှေ့တန်းပုံရိပ်တစ်ခုအား ဆွဲထုတ်ကာ ကျန်ဖိုင်ကိုခွဲခြမ်းစိပ်ဖြာရန်နှင့် လုပ်ဆောင်ရန် ၎င်းကိုအသုံးပြုရန် BuildKit ကိုပြောထားသည်။
ဤဗိသုကာသည် ဆွဲဆောင်မှုရှိသော ပရောဂျက်များစွာကို ဖွင့်ထားသည်။ Buildpacks ပေါင်းစည်းခြင်းသည် BuildKit သည် Dockerfile လုံးဝမပါဘဲ အပလီကေးရှင်းအရင်းအမြစ်ကုဒ်မှ ကွန်တိန်နာပုံများကို တည်ဆောက်နိုင်စေသည် — ၎င်းသည် ဘာသာစကားကို သိရှိနိုင်ပြီး သင့်လျော်သော အခြေခံပုံများကို ရွေးချယ်ကာ ထုတ်လုပ်မှုအဆင်သင့်ရှိသော ကွန်တိန်နာကို အလိုအလျောက် စုစည်းပေးသည်။ HPC နှင့် သိပ္ပံနည်းကျ ကွန်ပြူတာအသိုင်းအဝိုင်းများသည် BuildKit ၏အတွင်းပိုင်း LLB (Low-Level Build) ကိုယ်စားပြုမှုသို့ စုစည်းထားသော domain-specific ဘာသာစကားများဖြင့် တည်ဆောက်မှုများကို ဖော်ပြရန်အတွက် စိတ်ကြိုက် frontends များကို အသုံးပြုထားသည်။ heredoc ပံ့ပိုးကူညီမှု၊ --network ညွှန်ကြားချက်အလိုက် ထိန်းချုပ်မှုများနှင့် တည်ငြိမ်သော Dockerfile အစီအမံသို့ မရောက်ရှိမီ အဆင့်မြှင့်တင်ထားသော ကက်ရှ်အရိပ်အမြွက်များ ကဲ့သို့သော အင်္ဂါရပ်များပါရှိသော docker/dockerfile:labs syntax frontend စမ်းသပ်မှုများ။
သင့်ကိုယ်ပိုင် ရှေ့တန်းကို သတ်မှတ်နိုင်မှုသည် ပုံမှန်မဟုတ်သော တည်ဆောက်မှု လိုအပ်ချက်များရှိသည့် အဖွဲ့အစည်းများကို "Dockerfile syntax" နှင့် "ကွန်တိန်နာများကို လုံးလုံးလျားလျား စွန့်ပစ်ရန်" အကြား ရွေးချယ်ရန် မလိုအပ်ပါ။ FPGA Firmware၊ မြှုပ်သွင်းထားသော စနစ်ပုံများ သို့မဟုတ် အထူးပြု ML မော်ဒယ်ကွန်တိန်နာများ တည်ဆောက်နေသည့် အဖွဲ့သည် ကွန်တိန်နာများလည်ပတ်သည့် နေရာတိုင်းတွင် အသုံးပြုသည့် Standard OCI-လိုက်လျောညီထွေရှိသည့် ကွန်တိန်နာပုံများကို ထုတ်လုပ်နေချိန်တွင် ၎င်းတို့၏ ဒိုမိန်းအတွက် အဓိပ္ပာယ်ရှိစေသော ဝေါဟာရများဖြင့် ၎င်းတို့၏ တည်ဆောက်မှုကို ဖော်ပြနိုင်သည်။ ဤတိုးချဲ့နိုင်မှုသည် ၎င်းတို့၏ထည့်သွင်းဖော်မတ်ကို ပုံသေအဖြစ်သတ်မှတ်ထားသည့် တည်ဆောက်မှုစနစ်များထက် စစ်မှန်သောဗိသုကာဆိုင်ရာအားသာချက်တစ်ခုဖြစ်သည်။
Provenance နှင့် SBOM- SolarWinds World အတွက် တည်ဆောက်ခြင်း
ဆော့ဖ်ဝဲလ်ထောက်ပံ့ရေးကွင်းဆက်လုံခြုံရေးသည် သီအိုရီဆိုင်ရာစိုးရိမ်မှုမှ 2020 ခုနှစ်တွင် SolarWinds ချိုးဖောက်မှုနှင့် 2021 ခုနှစ်တွင် Log4Shell အားနည်းချက်တို့ပြီးနောက် ဘုတ်အဖွဲ့အဆင့် ဦးစားပေးအဖြစ်သို့ ရွေ့ပြောင်းခဲ့သည်။ ဗဟိုကန်ထရိုက်တာများအတွက် အမေရိကန်အစိုးရ၏ ဆိုက်ဘာလုံခြုံရေးဆိုင်ရာ အမှုဆောင်အမိန့် 14028 သည် 2021 ခုနှစ် မေလတွင် ထုတ်ပြန်ခဲ့သော ဆော့ဖ်ဝဲလ်ဘီလ်ဆိုင်ရာပစ္စည်းများကို ဖက်ဒရယ်ကန်ထရိုက်များထံ ပေးအပ်ခဲ့သည်။ BuildKit ၏သက်သေအထောက်အထားများနှင့် SBOM မျိုးဆက်အင်္ဂါရပ်များသည် ဤစည်းမျဉ်းစည်းကမ်းနှင့် လုံခြုံရေးအခင်းအကျင်းအတွက် တိုက်ရိုက်တုံ့ပြန်မှုတစ်ခုဖြစ်သည်။
--provenance=true နှင့် --sbom=true အလံများဖြင့်၊ BuildKit သည် ကွန်တိန်နာပုံထဲသို့ မည်သည့်အရာဝင်သွားသည်ကို အတိအကျဖော်ပြသည့် — မည်သည့်အခြေခံပုံများကိုအသုံးပြုထားသည်၊ Dockerfile လမ်းညွှန်ချက်များကို ကွပ်မျက်ထားသည့်၊ မည်သည့်အရင်းအမြစ်ဖိုင်များရှိနေသနည်း၊ ပြင်ပမှီခိုအားထားမှုများကို ရယူထားသည်ကို ဖော်ပြသည့် လျှို့ဝှက်သင်္ကေတဆိုင်ရာ သက်သေအထောက်အထားများကို ထုတ်ပေးပါသည်။ ဤသက်သေပြချက်များသည် SLSA (ဆော့ဖ်ဝဲ Artifacts အတွက် ပံ့ပိုးပေးသည့် ကွင်းဆက်အဆင့်များ) မူဘောင်နှင့် သက်သေပြဖော်မတ်တို့ကို လိုက်နာခြင်းဖြင့် ၎င်းတို့အား Sigstore's Cosign နှင့် OPA (Open Policy Agent) ကဲ့သို့သော မူဝါဒအင်ဂျင်များမှ စက်ဖြင့် အတည်ပြုနိုင်စေပါသည်။
ဤလုပ်ဆောင်မှုသည် လက်တွေ့ကျသော အလုပ်အသွားအလာမှာ ဤကဲ့သို့ဖြစ်သည်-
- ဆော့ဖ်ဝဲဆော့ဖ်ဝဲက ကုဒ်ကို တွန်းပို့သည်။ CI ပိုက်လိုင်းသည် သက်သေပြချက်ဖွင့်ထားသည့် BuildKit တည်ဆောက်မှုကို အစပျိုးစေသည်။
- BuildKit သည် အစိတ်အပိုင်းများနှင့် ၎င်းတို့၏ဗားရှင်းများအားလုံးကို ရေးထိုးထားသော SBOM ကို ထုတ်ပေးပါသည်။
- SBOM အား ပုံမန်နီးဖက်စ်နှင့်အတူ ကွန်တိန်နာမှတ်ပုံတင်ခြင်းသို့ လွှင့်တင်ထားသည်။
- အသုံးပြုမှုကို ခွင့်ပြုခြင်းမပြုမီ Kubernetes အစုအဝေးရှိ ဝင်ခွင့်ထိန်းချုပ်ကိရိယာများသည် သက်သေအထောက်အထားကို အတည်ပြုပါ။
- Vulnerability scanners များသည် CVEs အသစ်များကို ထုတ်ဖော်သည့်အခါ ထိခိုက်သည့်ပုံများကို ခွဲခြားသတ်မှတ်ရန် SBOM ကို မေးမြန်းပါသည်။
ဤပိုက်လိုင်းအပြည့်အစုံကို အကောင်အထည်ဖော်သည့်အဖွဲ့များသည် လည်ပတ်နေသည့် ကွန်တိန်နာတိုင်းရှိ အစိတ်အပိုင်းတိုင်း၏ တိကျသော စက်ဖြင့်ဖတ်နိုင်သော မြေပုံတစ်ခုရှိသောကြောင့် ၎င်းတို့တွင် တိကျသော စက်ဖြင့်ဖတ်နိုင်သော မြေပုံတစ်ခုရှိသည်။ Mewayz ကဲ့သို့ လုပ်ငန်းများအတွက် ဖောက်သည်များ၏ လုပ်ငန်းလည်ပတ်မှု လုပ်ငန်းစဉ်များတွင် နက်နက်ရှိုင်းရှိုင်း ပေါင်းစပ်ထားသည့် - လုပ်ခလစာကို လုပ်ဆောင်ခြင်း၊ သင်္ဘောဒေတာ စီမံခန့်ခွဲခြင်း၊ ငွေတောင်းခံလွှာများကို လုပ်ဆောင်ခြင်း - ခိုင်မာသော၊ စာရင်းစစ်နိုင်သော ထောက်ပံ့ရေးကွင်းဆက်ကို သရုပ်ပြနိုင်မှုသည် လုပ်ငန်းဆိုင်ရာ အရောင်းစကားဝိုင်းများအတွက် သာလွန်ကောင်းမွန်သော လုပ်ငန်းတစ်ခုအဖြစ် မဟုတ်ဘဲ လုပ်ငန်းဆိုင်ရာ အရောင်းစကားဝိုင်းများအတွက် လိုအပ်ချက်များ တိုးလာပါသည်။
စတင်ခြင်း- မူရင်းတည်ဆောက်မှုများမှ အဆင့်မြင့်ပိုက်လိုင်းများအထိ
မကြာသေးမီက ဗားရှင်းကို သင်အသုံးပြုနေပါက - Docker 23.0 နှင့် နောက်ပိုင်းတွင် ၎င်းကို မူရင်းအတိုင်း ဖွင့်ထားလျှင်
BuildKit သည် သင့် Docker ပတ်ဝန်းကျင်တွင် လုပ်ဆောင်နေပါသည်။ အသင်းအများစုအတွက် ပထမဆုံးလက်တွေ့အဆင့်မှာ docker buildx subcommand မှတစ်ဆင့် BuildKit ၏ အင်္ဂါရပ်အပြည့်အစုံကို ပြသသည့် Docker Buildx ပလပ်အင်ကို ဖွင့်ထားသည်။ docker buildx ဖန်တီးခြင်း --use ကို လုပ်ဆောင်ခြင်းသည် ပုံသေဒရိုက်ဗာထက် ပိုမိုလုပ်ဆောင်နိုင်စွမ်းရှိသော BuildKit တည်ဆောက်သူ ဥပမာကို သတ်မှတ်ပေးပါသည်။ ထိုနေရာမှ၊ အဆင့်မြင့်အင်္ဂါရပ်များကို တိုးမြှင့်လက်ခံခြင်းသည် အရာအားလုံးကို တစ်ပြိုင်နက်လက်ခံရန် ကြိုးစားခြင်းထက် အဓိပ္ပါယ်ရှိစေသည်။
အခြေခံ docker build တောင်းခံချက်များကို လုပ်ဆောင်နေသော အဖွဲ့တစ်ဖွဲ့အတွက် ကျိုးကြောင်းဆီလျော်သော မွေးစားလမ်းကြောင်းတစ်ခုသည် CI သို့ ကက်ရှ်တင်ပို့မှုများကို ဦးစွာထည့်ပုံရသည် — ၎င်းသည် ပုံစံဖွဲ့စည်းပုံပြောင်းလဲမှုအနည်းငယ်ဖြင့် ချက်ချင်းတိုင်းတာနိုင်သော မြန်နှုန်းတိုးတက်မှုများကို ပေးဆောင်သည်။ အဖွဲ့သည် ARM အခြေခံအဆောက်အအုံကို ပစ်မှတ်ထားလာသောအခါတွင် များစွာသော platform တည်ဆောက်မှုများသည် တန်ဖိုးရှိလာပါသည်။ လျှို့ဝှက်တပ်ဆင်ခြင်းသည် သီးသန့်ပက်ကေ့ဂျ်စာရင်းသွင်းခြင်း သို့မဟုတ် SSH သော့များကို တည်ဆောက်သည့်အကြောင်းအရာတွင် ပေါ်လာသည့်အချိန်တိုင်းတွင် အသုံးပြုထိုက်သည်။ ကိုက်ညီမှုလိုအပ်ချက်များ သို့မဟုတ် လုပ်ငန်းဖောက်သည်များ၏ တောင်းဆိုချက်များသည် ထောက်ပံ့ရေးကွင်းဆက်စာရွက်စာတမ်းများ လိုအပ်သောအခါတွင် သက်သေအထောက်အထားအထောက်အထားများသည် အဓိပ္ပာယ်ရှိစေသည်။
BuildKit ၏ ပိုမိုနက်ရှိုင်းသောသင်ခန်းစာမှာ တမင်တကာတည်ဆောက်ခြင်းအကြောင်းဖြစ်သည်။ မိုက်ခရိုဝန်ဆောင်မှုအတွက် ကွန်တိန်နာတစ်လုံး၊ စက်သင်ယူမှုအဆုံးအဖြတ်တစ်ခု သို့မဟုတ် Mewayz ၏ လုပ်ငန်း module 207 အစုံကဲ့သို့ ရှုပ်ထွေးသောပလပ်ဖောင်းတစ်ခုကို ပို့ဆောင်နေသည်ဖြစ်စေ၊ တည်ဆောက်မှုလုပ်ငန်းစဉ်သည် လက်တွေ့အသုံးချမှုတွင် သင်အလျင်စလိုလုပ်ဆောင်နေသည့်ပုံစံမဟုတ်ပေ — ၎င်းသည် တင်ပို့ရောင်းချသည့်အရာအားလုံး၏ အရည်အသွေး၊ လုံခြုံရေးအနေအထားနှင့် လုပ်ငန်းလည်ပတ်မှုရင့်ကျက်မှုကို ရောင်ပြန်ဟပ်သည့် အင်ဂျင်နီယာပစ္စည်းတစ်ခုဖြစ်သည်။ BuildKit သည် သင့်အား ထိုရှေးဟောင်းပစ္စည်းကို ကောင်းမွန်အောင်ပြုလုပ်ရန် ကိရိယာများကို ပေးသည်။ မေးခွန်းမှာ ၎င်းတို့ကို အသုံးပြုရန် အချိန်ယူသလား။
အမေးများသောမေးခွန်းများ
BuildKit ဆိုတာ ဘာလဲ၊ ဂန္ထဝင် Docker တည်ဆောက်မှုစနစ်နဲ့ ဘယ်လိုကွာခြားလဲ။
BuildKit သည် Docker ၏ မျိုးဆက်သစ် တည်ဆောက်ရေးအင်ဂျင်ဖြစ်ပြီး Docker 18.09 တွင် မိတ်ဆက်ပြီး Docker 23.0 တွင် ပုံသေပြုလုပ်ထားသည်။ ဂန္ထဝင်တည်ဆောက်သူနှင့်မတူဘဲ၊ BuildKit သည် အပြိုင်အလွှာလုပ်ဆောင်မှု၊ အဆင့်မြင့် ကက်ရှ်နည်းဗျူဟာများ၊ လျှို့ဝှက်ချက်များကို တပ်ဆင်ခြင်းနှင့် အပြန်အလှန်ပလပ်ဖောင်းတည်ဆောက်မှုများကို ပံ့ပိုးပေးသည်။ ၎င်းသည် တည်ဆောက်မှုလုပ်ငန်းစဉ်ကို ညွှန်ကြားထားသည့် acyclic ဂရပ်ဖစ် (DAG) အဖြစ် ဆက်ဆံသည်၊၊ ပိုမိုထက်မြက်သော မှီခိုမှုဆိုင်ရာ ကြည်လင်ပြတ်သားမှုကို ရရှိစေပြီး ရှုပ်ထွေးပြီး အဆင့်များစွာရှိသော Dockerfiles အတွက် တည်ဆောက်ချိန်များ သိသိသာသာ မြန်ဆန်စေသည်။
Docker ဖြင့် BuildKit စတင်အသုံးပြုရန် အပိုတစ်ခုခုကို ထည့်သွင်းရန် လိုအပ်ပါသလား။
သင် Docker 23.0 သို့မဟုတ် နောက်ပိုင်းတွင် အသုံးပြုနေပါက အပိုထည့်သွင်းမှုမလိုအပ်ပါ — BuildKit ကို မူရင်းအတိုင်းဖွင့်ထားသည်။ ဗားရှင်းအဟောင်းများတွင်၊ သင့်တည်ဆောက်မှုအမိန့်များကို မလုပ်ဆောင်မီ ပတ်ဝန်းကျင်ပြောင်းလဲမှုဖြစ်နိုင်သော DOCKER_BUILDKIT=1 ကို သတ်မှတ်ခြင်းဖြင့် ၎င်းကို အသက်သွင်းနိုင်ပါသည်။ အဝေးထိန်း ဆောက်ကက်ရှ်များ သို့မဟုတ် ပလပ်ဖောင်းအစုံလိုက် တည်ဆောက်မှုများကဲ့သို့သော အဆင့်မြင့်အသုံးပြုမှုကိစ္စများအတွက်၊ သင်သည် docker buildx ဖန်တီးမှု ကို အသုံးပြု၍ သီးသန့် Buildx တည်ဆောက်သူ ဥပမာတစ်ခုကို စီစဉ်သတ်မှတ်လိုနိုင်ပါသည်။
BuildKit ကို စံကွန်တိန်နာပုံများထက် ကျော်လွန်၍ ရှေးဟောင်းပစ္စည်းများကို တည်ဆောက်ရန် အသုံးပြုနိုင်ပါသလား။
ဟုတ်ကဲ့၊ ဒါက BuildKit ရဲ့ တန်ဖိုးအရှိဆုံး စွမ်းဆောင်ရည်တွေထဲက တစ်ခုပါ။ စိတ်ကြိုက်မျက်နှာစာများနှင့် --output အလံကို အသုံးပြု၍ BuildKit သည် အကြမ်း binaries၊ tarballs၊ static websites နှင့် အခြားသော မတရားသောဖိုင် artifacts များကို OCI ပုံများသာမကဘဲ ထုတ်လုပ်နိုင်သည်။ ၎င်းသည် ပေါင်းစပ်ကိရိယာကွင်းဆက်မှ မတူညီသော အထွက်ဖော်မတ်များ လိုအပ်သည့် polyglot monorepos နှင့် ရှုပ်ထွေးသော CI ပိုက်လိုင်းများတွင် သဘာဝအတိုင်း အံဝင်ခွင်ကျရှိသော ယေဘူယျရည်ရွယ်ချက်ဖြင့် တည်ဆောက်သည့်အင်ဂျင်ကို ပြုလုပ်ပေးပါသည်။
BuildKit သည် Mewayz ကဲ့သို့သော ကိရိယာများနှင့်အတူ ပိုမိုကျယ်ပြန့်သော DevOps ပလပ်ဖောင်းတွင် မည်သို့ အံဝင်ခွင်ကျဖြစ်သနည်း။
BuildKit သည် အဆင့်နိမ့်တည်ဆောက်မှုအလွှာကို ကိုင်တွယ်သော်လည်း ခေတ်မီဖွံ့ဖြိုးတိုးတက်ရေးအဖွဲ့များသည် စီးပွားရေးလုပ်ငန်းအသွားအလာများ၊ ဖောက်သည်ပေးပို့မှုနှင့် လုပ်ငန်းလည်ပတ်မှုလုပ်ငန်းစဉ်များကို စီမံခန့်ခွဲရန် လိုအပ်ပါသည်။ Mewayz — $19/mo မှစတင်သည့် 207-module လုပ်ငန်း OS ကဲ့သို့သော ပလပ်ဖောင်းများ — ဆော့ဖ်ဝဲလ်လုပ်ငန်းများ၏ လုပ်ငန်းလည်ပတ်မှုဘက်ခြမ်းကို လွှမ်းခြုံခြင်းဖြင့် အခြေခံအဆောက်အအုံဆိုင်ရာကိရိယာများကို ဖြည့်စွက်ပါ။ Mewayz ကဲ့သို့ BuildKit မှ စွမ်းဆောင်ထားသည့် ထိရောက်သော ပိုက်လိုင်းများ တွဲချိတ်ခြင်းသည် အဖွဲ့များအား ကုဒ်ပစ္စည်းမှ ဖောက်သည်ပေးပို့ခြင်းအထိ ပြီးပြည့်စုံသော အစုအဝေးကို ပေးသည်။
We use cookies to improve your experience and analyze site traffic. Cookie Policy