BuildKit៖ ត្បូងលាក់របស់ Docker ដែលអាចបង្កើតអ្វីៗស្ទើរតែទាំងអស់។
មតិយោបល់
Mewayz Team
Editorial Team
BuildKit៖ ត្បូងលាក់របស់ Docker ដែលអាចបង្កើតអ្វីៗស្ទើរតែទាំងអស់
អ្នកអភិវឌ្ឍន៍ភាគច្រើនស្គាល់ Docker ជារយៈពេលដំណើរការកុងតឺន័រ ដែលផ្លាស់ប្តូររបៀបដែលកម្មវិធីត្រូវបានដឹកជញ្ជូន។ មានមនុស្សតិចណាស់ដែលដឹងអំពីម៉ាស៊ីនដែលស្ងាត់ស្ងៀមនៅក្រោមផ្ទៃនៃរាល់ការស្ថាបនា Docker ទំនើបៗ — BuildKit ដែលជាប្រព័ន្ធសាងសង់ជំនាន់ក្រោយដែលបានដឹកជញ្ជូនជាមួយ Docker តាំងពីកំណែ 18.09 ហើយបានក្លាយជាកម្មវិធីខាងក្រោយលំនាំដើមនៅក្នុង Docker 23.0 ។ ខណៈពេលដែលវិស្វករជជែកតវ៉ាឥតឈប់ឈរអំពីការកំណត់រចនាសម្ព័ន្ធ Kubernetes និងគំរូសេវាកម្មខ្នាតតូច BuildKit ត្រូវបានវិវឌ្ឍជាលំដាប់ទៅជាប្រព័ន្ធសាងសង់ដែលអាចបត់បែនបានដ៏មានឥទ្ធិពលបំផុតមួយនៅក្នុងប្រព័ន្ធអេកូ DevOps ។ ប្រសិនបើអ្នកបានចាត់ទុកវាគ្រាន់តែជា docker build លឿនជាងមុន នោះអ្នកកំពុងទុកសមត្ថភាពដ៏ធំសម្បើមនៅលើតុ។ ក្រុមហ៊ុនដែលដំណើរការបំពង់ CI/CD ដែលមានថាមពលខ្ពស់បានកាត់បន្ថយពេលវេលាសាងសង់ 50-70% ដោយគ្រាន់តែយល់ពីអ្វីដែល BuildKit ផ្តល់ជូនពិតប្រាកដ — ហើយនោះគ្រាន់តែជាការចាប់ផ្តើមប៉ុណ្ណោះ។
អ្វីដែលធ្វើឱ្យ BuildKit មានលក្ខណៈខុសប្លែកពីអ្នកបង្កើតបុរាណ
ម៉ាស៊ីនបង្កើត Docker ដើមបានប្រតិបត្តិសេចក្តីណែនាំ Dockerfile ជាបន្តបន្ទាប់ ស្រទាប់មួយក្នុងពេលតែមួយ ដោយមិនដឹងពីអ្វីដែលការងារអាចកើតឡើងដោយសុវត្ថិភាពស្របគ្នា។ BuildKit ជំនួសគំរូប្រតិបត្តិលីនេអ៊ែរនោះដោយក្រាហ្វដែលបានដឹកនាំ (DAG) — ក្រាហ្វិកអាស្រ័យដែលយល់ថាជំហានបង្កើតមួយណាពឹងផ្អែកលើគ្នាទៅវិញទៅមក ហើយដែលមិនមាន។ ដំណាក់កាលឯករាជ្យប្រតិបត្តិក្នុងពេលដំណាលគ្នា ដំណាក់កាលដែលមិនប្រើត្រូវបានរំលងទាំងស្រុង ហើយការស្ថាបនាទាំងមូលក្លាយជាការពិពណ៌នាអំពីអ្វីដែលអ្នកចង់បាន ជាជាងការចាំបាច់នៃជំហានដែលអ្នកត្រូវសូត្រតាមលំដាប់លំដោយត្រឹមត្រូវ។
ការផ្លាស់ប្តូរស្ថាបត្យកម្មនេះមានផលវិបាកជាក់ស្តែងដែលហួសពីល្បឿន។ នៅពេលដែល Dockerfile ពហុដំណាក់កាល ចងក្រង Go binary ក្នុងដំណាក់កាលមួយ ទាញយក Node.js dependencies នៅក្នុងមួយទៀត ហើយផ្គុំរូបភាពផលិតកម្មក្នុងទីបី BuildKit អាចដំណើរការពីរដំណាក់កាលដំបូងក្នុងពេលដំណាលគ្នា។ ការស្ថាបនាដែលពីមុនចំណាយពេល 4 នាទីលើអ្នករត់ CI ដ៏មានអានុភាពឥឡូវនេះបានបញ្ចប់ក្នុងរយៈពេលតិចជាង 90 វិនាទី។ Stripe, Shopify និងពិន្ទុនៃក្រុមវិស្វកម្មខ្នាតខ្ពស់ផ្សេងទៀតបានចងក្រងឯកសារអំពីការកើនឡើងស្រដៀងគ្នានៅក្នុងឧបករណ៍ខាងក្នុងរបស់ពួកគេ។ គំរូ DAG ក៏មានន័យថា BuildKit អាចបង្កើតទិន្នន័យមេតានៃការសាងសង់ដែលមានភាពត្រឹមត្រូវខ្ពស់ ដែលជាមូលដ្ឋានគ្រឹះសម្រាប់លក្ខណៈពិសេសដូចជាការបញ្ជាក់ភស្តុតាង និងការបង្កើតវិក្កយបត្រផ្នែកទន់ (SBOM) ដែលមានសារៈសំខាន់យ៉ាងខ្លាំងសម្រាប់សុវត្ថិភាពសង្វាក់ផ្គត់ផ្គង់។
ក៏មានការផ្លាស់ប្តូរគំនិតនៅក្នុងរបៀបដែលការធ្វើឱ្យឃ្លាំងសម្ងាត់ដំណើរការមិនត្រឹមត្រូវ។ អ្នកសាងសង់បុរាណបានធ្វើឱ្យមានសុពលភាពគ្រប់ស្រទាប់ខាងក្រោមការណែនាំដែលបានផ្លាស់ប្តូរ។ BuildKit តាមដាន hashes នៃមាតិកានៅការបញ្ចូលនីមួយៗ ដូច្នេះការផ្លាស់ប្តូរមតិយោបល់នៅក្នុង Dockerfile មិនរំខានដល់ការបញ្ចូលឃ្លាំងសម្ងាត់ដែលតំណាងឱ្យការចងក្រងសាមសិបនាទីនោះទេ។ នៅពេលដែលឃ្លាំងសម្ងាត់ស្ថាបនារបស់អ្នកគឺមានភាពខុសប្លែកគ្នារវាងរង្វិលជុំមតិត្រឡប់រយៈពេលប្រាំនាទី និងសែសិបនាទីសម្រាប់ក្រុមវិស្វកររបស់អ្នក ភាពជាក់លាក់នេះមានសារៈសំខាន់ជាងអ្វីដែលវាហាក់ដូចជាដំបូង។
បង្កើតពហុវេទិកា៖ ពាក្យបញ្ជាមួយ រាល់ស្ថាបត្យកម្ម
ទង់ --platform របស់ BuildKit និងការរួមបញ្ចូល QEMU បំប្លែងអ្វីដែលធ្លាប់ជាបញ្ហានៃការសម្របសម្រួលពហុប្រព័ន្ធដ៏ឈឺចាប់ទៅជាពាក្យបញ្ជាតែមួយ។ កំពុងដំណើរការ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 . បង្កើតរូបភាពដែលត្រៀមរួចជាស្រេចចំនួន 3 ស្របគ្នាពីការហៅបង្កើតតែមួយ។ សមត្ថភាពនេះបានក្លាយទៅជារឿងសំខាន់នៅពេលដែលឧស្សាហកម្មផ្លាស់ប្តូរឆ្ពោះទៅរក ARM — វត្ថុ AWS Graviton3 ផ្តល់ប្រសិទ្ធភាពតម្លៃប្រសើរជាងមុន 40% លើបន្ទុកការងារដូចជាការបម្រើគេហទំព័រ និងដំណើរការទិន្នន័យ ហើយ Apple Silicon បានធ្វើឱ្យ ARM ជាម៉ាស៊ីនអភិវឌ្ឍន៍លំនាំដើមសម្រាប់វិស្វកររាប់លាននាក់។
មុនពេលការគាំទ្រពហុវេទិការបស់ BuildKit មានភាពចាស់ទុំ ការរក្សាបំពង់សាងសង់ដាច់ដោយឡែកសម្រាប់ស្ថាបត្យកម្មផ្សេងៗគ្នាគឺជាមជ្ឈមណ្ឌលចំណាយពិតប្រាកដ។ ក្រុមទាំងបានរក្សា Dockerfiles ជាច្រើន ដំណើរការបំពង់ CI ដាច់ដោយឡែកពីអ្នករត់ប្រណាំងដែលមានស្ថាបត្យកម្មផ្សេងៗគ្នា ឬគ្រាន់តែបញ្ជូនរូបភាព x86 គ្រប់ទីកន្លែង និងបានបង់ថ្លៃពិន័យលើដំណើរការលើហេដ្ឋារចនាសម្ព័ន្ធ ARM ។ ជាមួយនឹង BuildKit អ្នកកំណត់ការស្ថាបនារបស់អ្នកម្តង ហើយអនុញ្ញាតឱ្យប្រព័ន្ធគ្រប់គ្រងការចងក្រងស្ថាបត្យកម្មជាក់លាក់ដោយតម្លាភាព។ គម្រោងច្រែះដែលតម្រូវឱ្យមានការចងក្រងឆ្លងគ្នា គម្រោង Go ជាមួយនឹងភាពអាស្រ័យ CGO កញ្ចប់ Python ដែលមានផ្នែកបន្ថែម C — BuildKit គ្រប់គ្រងស្រទាប់ត្រាប់តាមដោយមិនតម្រូវឱ្យអ្នកយល់ព័ត៌មានលម្អិតនៃវេទិកាគោលដៅនីមួយៗ។
តម្លៃអាជីវកម្មជាក់ស្តែងនៅទីនេះគឺអាចវាស់វែងបាន។ ក្រុមដែលដំណើរការ 200 containers នៅលើ AWS Graviton instances នៅ $0.04 ក្នុងមួយ vCPU-hour ធៀបនឹង x86 instance ដែលសមមូលនៅ $0.056 per vCPU-hour សន្សំបានប្រហែល $11,520 ជារៀងរាល់ឆ្នាំក្នុង 100 vCPUs — សុទ្ធសាធពីការជ្រើសរើសស្ថាបត្យកម្មត្រឹមត្រូវ។ ការធ្វើឱ្យជម្រើសនោះអាចចូលប្រើបានដោយមិនចាំបាច់មានការប្រឹងប្រែងវិស្វកម្មឡើងវិញ គឺពិតជាប្រភេទនៃការបង្កើនប្រសិទ្ធភាពហេដ្ឋារចនាសម្ព័ន្ធដែលចំណាយសម្រាប់ខ្លួនវាភ្លាមៗ។
ការគ្រប់គ្រងសម្ងាត់ដោយមិនធ្លាយចូលទៅក្នុងស្រទាប់រូបភាព
លក្ខណៈពិសេសមួយក្នុងចំណោមលក្ខណៈពិសេសរបស់ BuildKit ដែលមិនសូវមានតម្លៃបំផុតគឺ API សម្ងាត់របស់វា។ អ្នកបង្កើត Docker បុរាណមិនមានវិធីស្អាតដើម្បីបញ្ជូនព័ត៌មានសម្ងាត់ទៅក្នុងការបង្កើតដោយគ្មានលិខិតសម្គាល់ទាំងនោះដែលអាចបញ្ចប់នៅក្នុងស្រទាប់រូបភាពនោះទេ។ អ្នកអភិវឌ្ឍន៍បានធ្វើការជុំវិញបញ្ហានេះជាមួយនឹងការបង្កើតពហុដំណាក់កាល ការណែនាំ ARG និងការបញ្ជាទិញដោយប្រុងប្រយ័ត្ន — ប៉ុន្តែហានិភ័យនៃការដុតនំសោ API ឬសោ SSH ឯកជនដោយចៃដន្យទៅក្នុងរូបភាពដែលបានដឹកជញ្ជូននៅតែមានកម្រិតខ្ពស់។ ម៉ាស៊ីនស្កែនសុវត្ថិភាពតែងតែស្វែងរកព័ត៌មានសម្ងាត់ដែលសរសេរកូដរឹងនៅក្នុងរូបភាពកុងតឺន័រដែលបានបោះពុម្ពផ្សាយទៅកាន់បញ្ជីឈ្មោះសាធារណៈ ហើយការលេចធ្លាយទាំងនោះជាច្រើនបានតាមដានដោយផ្ទាល់ទៅការដោះស្រាយសម្ងាត់ដ៏ច្របូកច្របល់អំឡុងពេលបង្កើត។
ទង់ --secret របស់ BuildKit ភ្ជាប់ទិន្នន័យរសើបទៅក្នុងបរិយាកាសបង្កើតជាផ្លូវប្រព័ន្ធឯកសារបណ្តោះអាសន្នដែលមានសម្រាប់តែរយៈពេលនៃការណែនាំ RUN ជាក់លាក់ដែលត្រូវការវា ហើយមិនដែលប៉ះស្រទាប់រូបភាពណាមួយឡើយ។ ការណែនាំរបស់ Dockerfile ដូចជា RUN --mount=type=secret,id=npmrc cat /run/secrets/npmrc> ~/.npmrc && npm install ផ្តល់ឱ្យដំណើរការបង្កើតការចូលប្រើព័ត៌មានសម្ងាត់ npm ឯកជន ដោយមិនមានព័ត៌មានបញ្ជាក់អត្តសញ្ញាណទាំងនោះលេចឡើងក្នុងរូបភាពចុងក្រោយ ឬស្រទាប់មធ្យមណាមួយឡើយ។ គំរូដូចគ្នានេះដំណើរការសម្រាប់ព័ត៌មានសម្ងាត់ PyPI ការកំណត់ Maven សោ SSH សម្រាប់ឃ្លាំង Git ឯកជន និងសម្ភារៈរសើបផ្សេងទៀតដែលដំណើរការសាងសង់របស់អ្នកទាមទារ។
សម្រាប់ក្រុមដែលបង្កើតកម្មវិធីដែលប៉ះនឹងឧស្សាហកម្មដែលបានគ្រប់គ្រង — វេទិកាថែទាំសុខភាព ផលិតផល fintech កម្មវិធីធនធានមនុស្ស — ភាពខុសគ្នារវាង "លិខិតសម្គាល់អាចមាននៅក្នុងរូបភាព" និង "លិខិតសម្គាល់មិនអាចមាននៅក្នុងរូបភាព" គឺជាភាពខុសគ្នារវាងការឆ្លងកាត់សវនកម្មសុវត្ថិភាព និងចំណាយពេលបីសប្តាហ៍ដើម្បីជួសជុលការរកឃើញ។ វេទិកាដូចជា Mewayz ដែលផ្តល់ថាមពលដល់ប្រតិបត្តិការអាជីវកម្មសម្រាប់អ្នកប្រើប្រាស់ជាង 138,000 នាក់នៅទូទាំងឧស្សាហកម្មដូចជា ប្រាក់បៀវត្សរ៍ ធនធានមនុស្ស និងវិក្កយបត្រ អាស្រ័យទៅលើឥរិយាបថសុវត្ថិភាពដែលអាចបញ្ជាក់បានបែបនេះនៅក្នុងបំពង់បង្ហូរប្រេង និងការដាក់ពង្រាយរបស់ពួកគេ ដើម្បីរក្សាការជឿទុកចិត្តរបស់អតិថិជនទាំងនោះដែលពង្រីកដល់ទិន្នន័យហិរញ្ញវត្ថុ និងបុគ្គលិកដែលរសើបរបស់ពួកគេ។
ការនាំចេញឃ្លាំងសម្ងាត់៖ ធ្វើឱ្យបំពង់ CI ពិតជាលឿន
បំពង់បង្ហូរ CI គឺជាកន្លែងដែលការស្ថាបនាមានសារៈសំខាន់បំផុត ហើយជាកន្លែងដែលបទពិសោធន៍បង្កើត Docker លំនាំដើមមានការឈឺចាប់បំផុតក្នុងប្រវត្តិសាស្ត្រ។ អ្នករត់ CI ថ្មី ជាធម្មតាចាប់ផ្តើមដោយឃ្លាំងសម្ងាត់ទទេ មានន័យថារាល់ការដំណើរការបំពង់នឹងចងក្រងអ្វីៗគ្រប់យ៉ាងឡើងវិញពីទទេ។ សម្រាប់សេវាកម្ម Java ដែលមានភាពអាស្រ័យរាប់រយ Maven គម្រោង Rust ឬកម្មវិធី Python ដែលមានផ្នែកបន្ថែមដើមធ្ងន់ នេះមានន័យថាបង្កើតពេលវេលាវាស់វែងក្នុងរយៈពេលរាប់សិបនាទីជាជាងវិនាទី។ តម្លៃអាជីវកម្មនៃ CI យឺតគឺធំសម្បើម — កាត់បន្ថយភាពញឹកញាប់នៃការដាក់ឱ្យប្រើប្រាស់ រង្វិលជុំផ្តល់យោបល់យូរជាងនេះ ហើយវិស្វករកំពុងអង្គុយទំនេររង់ចាំការបញ្ចប់បំពង់បង្ហូរប្រេង មុនពេលពួកគេអាចបញ្ចូលចូលគ្នា និងបន្តទៅមុខទៀត។
មុខងារនាំចេញឃ្លាំងសម្ងាត់របស់ BuildKit ដោះស្រាយវាជាមួយការបង្ហាញឃ្លាំងសម្ងាត់ដែលអាចនាំចេញបាន។ ដោយប្រើ --cache-to type=registry,ref=myregistry/myapp:cache និង --cache-from type=registry,ref=myregistry/myapp:cache BuildKit រុញរូបថតឃ្លាំងសម្ងាត់លម្អិតទៅកាន់បញ្ជីឈ្មោះមួយ បន្ទាប់ពីការបង្កើតនីមួយៗ ហើយទាញវានៅពេលចាប់ផ្តើមបន្ទាប់។ ឃ្លាំងសម្ងាត់ត្រូវបានដោះស្រាយដោយខ្លឹមសារ ដូច្នេះមានតែស្រទាប់ដែលបានផ្លាស់ប្តូរពិតប្រាកដប៉ុណ្ណោះដែលអាចទាញយកមកវិញបាន។ ក្រុមដែលប្រើលំនាំនេះនៅក្នុង GitHub Actions, GitLab CI និង CircleCI ជាធម្មតាកាត់បន្ថយពេលវេលានៃបំពង់ពីដប់ប្រាំនាទីទៅក្រោមបីនៅលើការរត់ជាបន្តបន្ទាប់។ ឯកសារផ្ទាល់ខ្លួនរបស់ GitHub ស្តីពីដំណើរការការងារបង្កើត Docker កម្រិតខ្ពស់បានផ្តល់អនុសាសន៍យ៉ាងខ្លាំងចំពោះគំរូនេះសម្រាប់ហេតុផលនេះ។
ការស្ថាបនាដែលលឿនបំផុតគឺជាកម្មវិធីដែលអ្នកមិនត្រូវដំណើរការទៀតទេ។ ប្រព័ន្ធឃ្លាំងសម្ងាត់ដែលកំណត់ដោយខ្លឹមសាររបស់ BuildKit មិនគ្រាន់តែបង្កើនល្បឿននៃការបង្កើតប៉ុណ្ណោះទេ វាធ្វើឱ្យគំនិតទាំងមូលនៃ "ស្ថាបនា" កាន់តែឆ្លាតវៃ ដោយបង្វែរការចងក្រងម្តងហើយម្តងទៀតទៅជាភាពខុសគ្នាបន្ថែមនៃអ្វីដែលបានផ្លាស់ប្តូរ។
ការនាំចេញឃ្លាំងសម្ងាត់ក៏រួមបញ្ចូលយ៉ាងស្អាតស្អំជាមួយនឹងលំហូរការងារអភិវឌ្ឍន៍ផ្អែកលើសាខា។ អ្នកអាចកំណត់រចនាសម្ព័ន្ធបំពង់ 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 មានស្ថាបត្យកម្មផ្នែកខាងមុខដែលអាចដោតបាន ដែលអនុញ្ញាតឱ្យបង្កើតភាសា និងទម្រង់និយមន័យផ្ទាល់ខ្លួនទាំងស្រុង។ ផ្នែកខាងមុខត្រូវបានបញ្ជាក់ដោយការណែនាំ # syntax= នៅផ្នែកខាងលើនៃឯកសារស្ថាបនារបស់អ្នក ដែលប្រាប់ BuildKit ឱ្យទាញរូបភាពផ្នែកខាងមុខជាក់លាក់មួយ ហើយប្រើវាដើម្បីញែក និងប្រតិបត្តិឯកសារដែលនៅសល់។
ស្ថាបត្យកម្មនេះបានបើកដំណើរការគម្រោងគួរឱ្យទាក់ទាញជាច្រើន។ ការរួមបញ្ចូល Buildpacks អនុញ្ញាតឱ្យ BuildKit បង្កើតរូបភាពកុងតឺន័រពីកូដប្រភពកម្មវិធីដោយគ្មាន Dockerfile ទាល់តែសោះ - វារកឃើញភាសា ជ្រើសរើសរូបភាពមូលដ្ឋានសមរម្យ និងប្រមូលផ្តុំធុងដែលត្រៀមរួចជាស្រេចដោយស្វ័យប្រវត្តិ។ HPC និងសហគមន៍កុំព្យូទ័រវិទ្យាសាស្រ្តបានប្រើផ្នែកខាងមុខផ្ទាល់ខ្លួនដើម្បីពិពណ៌នាអំពីការបង្កើតនៅក្នុងភាសាជាក់លាក់នៃដែនដែលចងក្រងទៅជាតំណាង LLB (Low-Level Build) ខាងក្នុងរបស់ BuildKit ។ ការពិសោធន៍ផ្នែកខាងមុខវាក្យសម្ព័ន្ធ docker/dockerfile:labs ជាមួយនឹងលក្ខណៈពិសេសដូចជា ការគាំទ្រ heredoc, --network ការត្រួតពិនិត្យក្នុងមួយការណែនាំ និងបានធ្វើឱ្យប្រសើរនូវព័ត៌មានជំនួយឃ្លាំងសម្ងាត់ មុនពេលពួកវាចុះចតនៅក្នុងវាក្យសម្ព័ន្ធ Dockerfile ដែលមានស្ថេរភាព។
សមត្ថភាពក្នុងការកំណត់ផ្នែកខាងមុខផ្ទាល់ខ្លួនរបស់អ្នកក៏មានន័យថាអង្គការដែលមានតម្រូវការសាងសង់មិនធម្មតាមិនចាំបាច់ជ្រើសរើសរវាង "shoehorn អ្វីគ្រប់យ៉ាងទៅជាវាក្យសម្ព័ន្ធ Dockerfile" និង "បោះបង់ចោលធុងទាំងស្រុង" ។ ក្រុមដែលបង្កើតកម្មវិធីបង្កប់ FPGA រូបភាពប្រព័ន្ធបង្កប់ ឬធុងគំរូ ML ឯកទេសអាចពិពណ៌នាអំពីការបង្កើតរបស់ពួកគេក្នុងន័យដែលសមហេតុផលសម្រាប់ដែនរបស់ពួកគេ ខណៈពេលដែលនៅតែផលិតរូបភាពកុងតឺន័រដែលអនុលោមតាម OCI ស្តង់ដារដែលដាក់ពង្រាយគ្រប់ទីកន្លែងដែលកុងតឺន័រដំណើរការ។ ភាពអាចពង្រីកបាននេះគឺជាអត្ថប្រយោជន៍ស្ថាបត្យកម្មពិតប្រាកដលើប្រព័ន្ធសាងសង់ដែលចាត់ទុកទម្រង់បញ្ចូលរបស់ពួកគេថាថេរ។
Provenance និង SBOM៖ ការកសាងសម្រាប់ពិភពលោកក្រោយថាមពលព្រះអាទិត្យ
សុវត្ថិភាពខ្សែសង្វាក់ផ្គត់ផ្គង់កម្មវិធីបានផ្លាស់ប្តូរពីក្តីបារម្ភតាមទ្រឹស្តីទៅជាអាទិភាពកម្រិតក្រុមប្រឹក្សាភិបាលបន្ទាប់ពីការរំលោភ SolarWinds ក្នុងឆ្នាំ 2020 និងភាពងាយរងគ្រោះ Log4Shell នៅឆ្នាំ 2021។ បទបញ្ជាប្រតិបត្តិរបស់រដ្ឋាភិបាលសហរដ្ឋអាមេរិកលេខ 14028 ស្តីពីសន្តិសុខតាមអ៊ីនធឺណិតដែលបានចេញនៅខែឧសភា ឆ្នាំ 2021 បានកំណត់វិក័យប័ត្រផ្នែកទន់សម្រាប់កិច្ចសន្យាសហព័ន្ធ។ ការបញ្ជាក់បញ្ជាក់របស់ BuildKit និងលក្ខណៈពិសេសជំនាន់ SBOM គឺជាការឆ្លើយតបដោយផ្ទាល់ចំពោះទិដ្ឋភាពបទប្បញ្ញត្តិ និងសុវត្ថិភាពនេះ។
ជាមួយនឹងទង់ --provenance=true និង --sbom=true BuildKit បង្កើតការបញ្ជាក់ដែលមានហត្ថលេខាជាសម្ងាត់ដែលពណ៌នាអំពីអ្វីដែលចូលទៅក្នុងរូបភាពកុងតឺន័រ — តើរូបភាពមូលដ្ឋានមួយណាត្រូវបានប្រើប្រាស់ ការណែនាំរបស់ Dockerfile ដែលត្រូវបានប្រតិបត្តិ ឯកសារប្រភពណាខ្លះ និងភាពអាស្រ័យខាងក្រៅត្រូវបានទាញយក។ ការបញ្ជាក់ទាំងនេះអនុវត្តតាមក្របខណ្ឌ SLSA (Supply-chain Levels for Software Artifacts) និងទម្រង់ការបញ្ជាក់ដែលភ្ជាប់មកជាមួយ ដែលធ្វើឱ្យពួកវាអាចផ្ទៀងផ្ទាត់ដោយម៉ាស៊ីនដោយម៉ាស៊ីនគោលការណ៍ដូចជា Sigstore's Cosign និង OPA (Open Policy Agent)។
ដំណើរការការងារជាក់ស្តែងដែលបើកដំណើរការមើលទៅដូចនេះ៖
- អ្នកអភិវឌ្ឍន៍ជំរុញកូដ; បំពង់បង្ហូរ CI ចាប់ផ្តើមបង្កើត BuildKit ដោយបើកដំណើរការ។
- BuildKit បង្កើត SBOM ដែលចុះហត្ថលេខាដោយរាយបញ្ជីសមាសធាតុទាំងអស់ និងកំណែរបស់វា។
- SBOM ត្រូវបានបោះផ្សាយទៅបញ្ជីឈ្មោះកុងតឺន័ររួមជាមួយនឹងរូបភាពបង្ហាញ។
- ឧបករណ៍បញ្ជាការចូលរៀននៅក្នុងចង្កោម Kubernetes ផ្ទៀងផ្ទាត់ភ័ស្តុតាងមុនពេលអនុញ្ញាតឱ្យដាក់ឱ្យប្រើប្រាស់។
- ម៉ាស៊ីនស្កេនភាពងាយរងគ្រោះសួរ SBOM ដើម្បីកំណត់រូបភាពដែលរងផលប៉ះពាល់នៅពេលដែល CVEs ថ្មីត្រូវបានបង្ហាញ។
ក្រុមដែលអនុវត្តបំពង់បង្ហូរប្រេងពេញលេញនេះអាចឆ្លើយតបទៅនឹងការលាតត្រដាងភាពងាយរងគ្រោះក្នុងរយៈពេលប៉ុន្មានម៉ោងជាជាងថ្ងៃ ដោយសារពួកគេមានផែនទីម៉ាស៊ីនដែលអាចអានបានច្បាស់លាស់នៃគ្រប់សមាសធាតុនៅក្នុងគ្រប់កុងតឺន័រដែលកំពុងដំណើរការ។ សម្រាប់អាជីវកម្មដូចជា Mewayz ដែលរួមបញ្ចូលយ៉ាងស៊ីជម្រៅទៅក្នុងលំហូរការងាររបស់អតិថិជន — កំពុងដំណើរការបញ្ជីប្រាក់បៀវត្សរ៍ ការគ្រប់គ្រងទិន្នន័យកងនាវា ដំណើរការវិក្កយបត្រ — សមត្ថភាពក្នុងការបង្ហាញពីខ្សែសង្វាក់ផ្គត់ផ្គង់យ៉ាងម៉ត់ចត់ និងអាចសវនកម្មបានកាន់តែខ្លាំងឡើងជាតម្រូវការជាមុនសម្រាប់ការសន្ទនាផ្នែកលក់របស់សហគ្រាស មិនមែនគ្រាន់តែជាអ្វីដែលគួរធ្វើនោះទេ។
ការចាប់ផ្តើម៖ ពីការបង្កើតលំនាំដើមរហូតដល់បំពង់កម្រិតខ្ពស់
BuildKit កំពុងដំណើរការរួចហើយនៅក្នុងបរិស្ថាន Docker របស់អ្នក ប្រសិនបើអ្នកកំពុងប្រើកំណែថ្មី — Docker 23.0 ហើយក្រោយមកបើកវាតាមលំនាំដើម។ ជំហានជាក់ស្តែងដំបូងសម្រាប់ក្រុមភាគច្រើនគឺការបើកកម្មវិធីជំនួយ Docker Buildx ដែលបង្ហាញពីលក្ខណៈពិសេសពេញលេញរបស់ BuildKit ដែលបានកំណត់តាមរយៈពាក្យបញ្ជារង docker buildx ។ កំពុងដំណើរការ docker buildx create --use ដំឡើងឧទាហរណ៍ BuildKit builder ដែលមានសមត្ថភាពច្រើនជាងកម្មវិធីបញ្ជាលំនាំដើម។ ពីទីនោះ ការបង្កើនការទទួលយកលក្ខណៈពិសេសកម្រិតខ្ពស់ធ្វើឱ្យយល់ជាជាងការព្យាយាមទទួលយកអ្វីៗទាំងអស់ក្នុងពេលតែមួយ។
ផ្លូវទទួលយកដោយសមហេតុផលសម្រាប់ក្រុមដែលកំពុងដំណើរការការអំពាវនាវជាមូលដ្ឋាន docker build មើលទៅដូចជាការបន្ថែមការនាំចេញឃ្លាំងសម្ងាត់ទៅ CI ជាមុនសិន — វាផ្តល់នូវការកែលម្អល្បឿនដែលអាចវាស់វែងបានភ្លាមៗ ជាមួយនឹងការផ្លាស់ប្តូរការកំណត់តិចតួចបំផុត។ ការបង្កើតពហុវេទិកាក្លាយជាមានតម្លៃនៅពេលដែលក្រុមចាប់ផ្តើមកំណត់គោលដៅហេដ្ឋារចនាសម្ព័ន្ធ ARM ។ ការភ្ជាប់សម្ងាត់គឺមានតម្លៃក្នុងការទទួលយករាល់ពេលដែលការចុះឈ្មោះកញ្ចប់ឯកជន ឬសោ SSH លេចឡើងក្នុងបរិបទសាងសង់។ វិញ្ញាបនប័ត្របញ្ជាក់មានអត្ថន័យក្នុងការបើកនៅពេលដែលតម្រូវការអនុលោមភាព ឬតម្រូវការរបស់អតិថិជនសហគ្រាសធ្វើឱ្យឯកសារខ្សែសង្វាក់ផ្គត់ផ្គង់ចាំបាច់។
មេរៀនកាន់តែស៊ីជម្រៅរបស់ BuildKit គឺអំពីការកសាងដោយចេតនា។ មិនថាអ្នកកំពុងដឹកជញ្ជូនកុងតឺន័រសម្រាប់សេវាមីក្រូ ចំណុចបញ្ចប់ការរៀនម៉ាស៊ីន ឬវេទិកាស្មុគស្មាញដូចជាឈុតរបស់ Mewayz នៃ 207 ម៉ូឌុលអាជីវកម្ម ដំណើរការសាងសង់មិនមែនជាទម្រង់ដែលអ្នកប្រញាប់ប្រញាល់ឆ្លងកាត់តាមផ្លូវក្នុងការដាក់ពង្រាយនោះទេ វាជាវត្ថុបុរាណផ្នែកវិស្វកម្មដែលឆ្លុះបញ្ចាំងពីគុណភាព ឥរិយាបថសុវត្ថិភាព និងភាពចាស់ទុំនៃប្រតិបត្តិការនៃអ្វីគ្រប់យ៉ាងដែលដឹកជញ្ជូនចេញពីវា។ BuildKit ផ្តល់ឱ្យអ្នកនូវឧបករណ៍ដើម្បីធ្វើឱ្យវត្ថុបុរាណនោះល្អឥតខ្ចោះ។ សំណួរគឺសាមញ្ញថាតើអ្នកចំណាយពេលដើម្បីប្រើពួកវាឬអត់។
សំណួរដែលគេសួរញឹកញាប់
តើអ្វីទៅជា BuildKit ហើយតើវាខុសគ្នាយ៉ាងណាពីប្រព័ន្ធបង្កើត Docker បុរាណ?
BuildKit គឺជាម៉ាស៊ីនបង្កើតជំនាន់បន្ទាប់របស់ Docker ដែលបានណែនាំនៅក្នុង Docker 18.09 និងបានបង្កើតលំនាំដើមនៅក្នុង Docker 23.0។ មិនដូចអ្នកសាងសង់បុរាណទេ BuildKit គាំទ្រការប្រតិបត្តិស្រទាប់ប៉ារ៉ាឡែល យុទ្ធសាស្ត្រឃ្លាំងសម្ងាត់កម្រិតខ្ពស់ ការដំឡើងអាថ៌កំបាំង និងការស្ថាបនាឆ្លងកាត់វេទិកា។ វាចាត់ចែងដំណើរការសាងសង់ជាក្រាហ្វិចស៊ីក្លីកដែលដឹកនាំ (DAG) ដែលបើកដំណើរការដំណោះស្រាយភាពអាស្រ័យឆ្លាតវៃ និងពេលវេលាបង្កើតលឿនជាងមុនសម្រាប់ឯកសារ Dockerfiles ពហុដំណាក់កាលស្មុគស្មាញ។
តើខ្ញុំត្រូវដំឡើងអ្វីបន្ថែមដើម្បីចាប់ផ្តើមប្រើ BuildKit ជាមួយ Docker ដែរឬទេ?
មិនត្រូវការការដំឡើងបន្ថែមទេ ប្រសិនបើអ្នកកំពុងដំណើរការ Docker 23.0 ឬថ្មីជាងនេះ — BuildKit ត្រូវបានបើកតាមលំនាំដើម។ នៅលើកំណែចាស់ អ្នកអាចធ្វើឱ្យវាសកម្មដោយកំណត់អថេរបរិស្ថាន DOCKER_BUILDKIT=1 មុនពេលដំណើរការពាក្យបញ្ជាសាងសង់របស់អ្នក។ សម្រាប់ករណីប្រើប្រាស់កម្រិតខ្ពស់ ដូចជាឃ្លាំងសម្ងាត់សាងសង់ពីចម្ងាយ ឬការបង្កើតពហុវេទិកា អ្នកប្រហែលជាចង់កំណត់រចនាសម្ព័ន្ធកម្មវិធីបង្កើត Buildx ជាក់លាក់ដោយប្រើ docker buildx create។
តើ BuildKit អាចត្រូវបានប្រើដើម្បីបង្កើតវត្ថុបុរាណលើសពីរូបភាពកុងតឺន័រស្តង់ដារឬទេ?
បាទ/ចាស ហើយនេះគឺជាសមត្ថភាពមួយក្នុងចំណោមសមត្ថភាពដែលមិនសូវមានតម្លៃបំផុតរបស់ BuildKit។ ដោយប្រើផ្នែកខាងមុខផ្ទាល់ខ្លួន និងទង់ ---output BuildKit អាចបង្កើត binaries ឆៅ tarballs គេហទំព័រឋិតិវន្ត និងវត្ថុបុរាណឯកសារបំពានផ្សេងទៀត — មិនត្រឹមតែរូបភាព OCI ប៉ុណ្ណោះទេ។ នេះធ្វើឱ្យវាក្លាយជាម៉ាស៊ីនបង្កើតគោលបំណងទូទៅដែលសមនឹងធម្មជាតិទៅនឹង polyglot monorepos និងបំពង់ CI ស្មុគស្មាញ ដែលក្រុមផ្សេងៗគ្នាត្រូវការទម្រង់លទ្ធផលខុសៗគ្នាពី toolchain បង្រួបបង្រួម។
តើ BuildKit សមទៅនឹងវេទិកា DevOps ដ៏ទូលំទូលាយមួយជាមួយនឹងឧបករណ៍ដូចជា Mewayz យ៉ាងដូចម្តេច?
BuildKit គ្រប់គ្រងស្រទាប់សាងសង់កម្រិតទាប ប៉ុន្តែក្រុមអភិវឌ្ឍន៍ទំនើបក៏ត្រូវគ្រប់គ្រងលំហូរការងារអាជីវកម្ម ការផ្តល់អតិថិជន និងដំណើរការប្រតិបត្តិការផងដែរ។ វេទិកាដូចជា Mewayz — ប្រព័ន្ធប្រតិបត្តិការអាជីវកម្ម 207-module ចាប់ផ្តើមពី $19/ខែ — បំពេញបន្ថែមឧបករណ៍ហេដ្ឋារចនាសម្ព័ន្ធដោយគ្របដណ្តប់ផ្នែកប្រតិបត្តិការនៃអាជីវកម្មផ្នែកទន់។ ការផ្គូផ្គងបំពង់បង្ហូរប្រេងដែលមានប្រសិទ្ធភាពដែលដំណើរការដោយ BuildKit ជាមួយនឹងវេទិកាតែមួយដូចជា Mewayz ផ្តល់ឱ្យក្រុមនូវជង់ពេញលេញពីវត្ថុបុរាណកូដរហូតដល់ការចែកចាយអតិថិជន។
We use cookies to improve your experience and analyze site traffic. Cookie Policy