Shanraq.org Shanraq.org
Dockerfile: шағын, тексерілетін және артық құқығы жоқ жинақ
IT

Cloud & DevOps: жергілікті қолданбадан сенімді сервиске дейін 9-сабақ (барлығы 24)

Dockerfile: шағын, тексерілетін және артық құқығы жоқ жинақ

CloudLab-ты multi-stage бейнеге жинап, жинақ кезінде тест өткіземіз және артық құқығы жоқ пайдаланушыны тексереміз.

Мәтін ИИ көмегімен аударылды.

Бұл сабақ нөлден басталады. Бейтаныс сөз сіздің кемшілігіңіз емес: алдымен бейне құрамыз, кейін дәл мағына беріп, содан соң қолданамыз.

Қай жерде тұрмыз

Қысқа қайталау. Өткен сабақтың тірегі Dockerfile → қабат → image@digest → container → stop/remove. Қарамай төрт буынды атаңыз, содан кейін ғана жазбамен салыстырыңыз.

Сабақ нәтижесі

CloudLab-ты multi-stage бейнеге жинап, жинақ кезінде тест өткіземіз және артық құқығы жоқ пайдаланушыны тексереміз. Әр пәрмен нені тексеретінін және қандай ақауды табатынын түсіндіре алмайынша келесі сабаққа өтпеңіз.

Алдымен таныс бейне

Сапар чемоданына бүкіл шеберхана емес, керегі ғана салынады. Multi-stage Dockerfile үлкен ортада жинап, дайын binary-ді кішкентай таза образға көшіреді.

Аналогия ойды бастауға көмектеседі, бірақ технология құрылысын алмастырмайды. Төменде әр сөзді нақтылаймыз.

Сабақтың тірек сигналы

source → test → build → binary көшіру → non-root runtime

Тізбекті солдан оңға оқыңыз. Ол «қай пәрменді жаттаймын?» емес, «келесі қадам неге алдыңғысынан шығады?» дегенге жауап береді.

Жаңа сөздер қарапайым тілмен

  • Dockerfile — Образды қадаммен жинайтын мәтіндік рецепт.
  • Build stage — Компилятор мен source бар уақытша орта.
  • Runtime stage — Дайын бағдарлама жұмыс істейтін ең аз орта.
  • Non-root — Суперпайдаланушы құқығы жоқ user атынан іске қосу.

Асықпай талдаймыз

Multi-stage жинақ компиляторды құрастыру қабатында қалдырып, соңғы бейнеге тек binary файлдарды өткізеді. Бұл шабуыл бетін және өлшемді азайтады. USER 65532 үдерісті шектейді, ал статикалық healthcheck бейне ішінде shell талап етпейді.

Анықтаманы сөзбе-сөз жаттамаңыз. Себептік байланысты тауып, жоғарыдағы тірекпен қосыңыз.

Алдымен нәтижені болжаңыз

Іске қоспай тұрып қағазға жазыңыз: не өзгеруі, не сол күйде қалуы және қай output болжамды дәлелдеуі тиіс? Қате болжам да айырманы түсіндіре алсаңыз пайдалы.

Шағын қадаммен тәжірибе

Пәрмендерді course/cloud-devops-lab түбірінен орындаңыз. Пәрмендер оқу ортасына арналған. Серверді не деректі өзгертетін пәрменді іске қоспас бұрын оны толық оқып, ағымдағы қалтаны тексеріңіз. Блокты мағыналық топпен орындаңыз. Әр топтан кейін тоқтап, нәтижені болжаммен салыстырыңыз.

docker build --build-arg VERSION=lesson-09 -t cloudlab:lesson-09 .
docker image inspect cloudlab:lesson-09 --format 'user={{.Config.User}} size={{.Size}}'
docker run --rm --entrypoint /cloudlab-healthcheck cloudlab:lesson-09 || true

Жобаның эталон файлдары.

Бұл тәжірибе нақты не істейді

Жинау алдымен тестті орындап, CloudLab құрып, керекті файлды ғана тасиды. inspect user-ді, health сұрау іске қосуды тексереді. Кіші өлшем қауіпсіздікті өзі дәлелдемейді.

Не шығуы тиіс

  • Бейне тек тест өткен соң жиналады.
  • Пәрмен болжамды кодпен аяқталады.
  • Нәтижені таза ортада қайталауға болады.

Тірек сызбамен тұтасты жинаңыз

Тірек сызба 9

Төрт блок бойынша жүріп, бүкіл сабақты бір байланысқан әңгімемен түсіндіріңіз.

Көмексіз жаңғыртыңыз

  1. Сызбаны жауып, төрт блокты жатқа сызыңыз.
  2. Әр өтуді «себебі» сөзімен түсіндіріңіз.
  3. Бір жаңа терминді мәтінді қайталамай анықтаңыз.
  4. Нәтижені дәлелдейтін бір сигналды атаңыз.

Қатені тауып түзетіңіз

Қате: «Образ кіші болса, автоматты қауіпсіз». Дұрысы: кіші бет көмектеседі, бірақ жаңарту, dependency тексеру, құқық және қауіпсіз код керек.

Тапсырма

Енді сол мағынаны өзіңіз жинаңыз. Тірек сызбаға қарауға болады; мақсат — жады емтиханы емес, қайталанатын нәтиже.

Міндетті. cloudlab:practice жинап, бейне пайдаланушысы 0 не бос болса қатемен аяқталатын docker image inspect тексеруін жазыңыз. Тек POSIX sh пәрменін не скриптін, нақты кілт пен токенсіз жіберіңіз.

Дайындық өлшемдері

  • Әр іске қосылатын жолды түсінесіз.
  • Қайталау күтілетін нәтиже не қауіпсіз түсіндірілген айырма береді.
  • Output ішінде нақты key, token және password жоқ.
  • Success-ті дәлелдейтін факт көрсете аласыз.

Тексеру өтпесе, күтілген және нақты нәтижені жазып, тіректің бір үзілген буынына оралып қайталаңыз. Қате оқу құқығын алып қоймайды.

Қалауыңызша. Бір ықтимал ақауды және оны байқайтын сигналды жазыңыз.

Ашық перспектива

Келесі сабақ жаңа тірек қосады: Томдар, bind mount және деректің сақталуын дәлелдеу.

Курс мазмұны

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.