Тасвирҳои ночизи Docker, ки ба худ боварӣ доштанд *

[ истинод ба афсонаи бачагонаи амрикоии «Мотораки хурдакак, ки метавонист» - тахминан. хати]*

Тасвирҳои ночизи Docker, ки ба худ боварӣ доштанд *

Чӣ тавр ба таври худкор тасвирҳои хурди Docker-ро барои эҳтиёҷоти худ эҷод кардан мумкин аст

Обсессии ғайриоддӣ

Дар тӯли ду моҳи охир ман ба он ғамгин будам, ки тасвири Docker то чӣ андоза хурд буда метавонад ва ҳоло ҳам барнома кор мекунад?

Ман мефаҳмам, идея аҷиб аст.

Пеш аз он ки ба тафсилот ва техникӣ ворид шавам, мехостам шарҳ диҳам, ки чаро ин мушкилот маро ин қадар ба ташвиш овардааст ва он чӣ ба шумо дахл дорад.

Чаро андоза муҳим аст

Бо кам кардани мундариҷаи тасвири Docker, мо ба ин васила рӯйхати осебпазириро кам мекунем. Илова бар ин, мо тасвирҳоро тозатар мегардонем, зеро онҳо танҳо он чизеро дар бар мегиранд, ки барои иҷрои барномаҳо лозиманд.

Боз як бартарии хурд вуҷуд дорад - тасвирҳо каме зудтар зеркашӣ карда мешаванд, аммо ба андешаи ман, ин он қадар муҳим нест.

Лутфан таваҷҷӯҳ намоед: Агар шумо дар бораи андоза нигарон бошед, намуди Alpine хурд аст ва эҳтимол ба шумо мувофиқат мекунад.

Тасвирҳои беасос

Лоиҳаи Distroless интихоби тасвирҳои асосии "дистрол" -ро пешниҳод мекунад, ки онҳо менеҷерҳои бастаҳо, снарядҳо ва дигар утилитҳоро дар бар намегиранд, ки шумо дар сатри фармон дидан одат кардаед. Дар натиҷа, менеҷерҳои бастаҳои монанди pip и apt кор намекунад:

FROM gcr.io/distroless/python3
RUN  pip3 install numpy

Dockerfile бо истифода аз тасвири distroless Python 3

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM gcr.io/distroless/python3
 ---> 556d570d5c53
Step 2/2 : RUN  pip3 install numpy
 ---> Running in dbfe5623f125
/bin/sh: 1: pip3: not found

Пип дар тасвир нест

Одатан, ин мушкилот бо сохтани бисёрмарҳила ҳал карда мешавад:

FROM python:3 as builder
RUN  pip3 install numpy

FROM gcr.io/distroless/python3
COPY --from=builder /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.5/

Ҷамъоварии бисёрмарҳила

Дар натиҷа тасвири андозаи 130 МБ аст. На онкадар бад! Барои муқоиса: тасвири пешфарзии Python 929 МБ вазн дорад ва тасвири "лоғар" (3,7-slim) - 179 МБ, тасвири кӯҳӣ (3,7-alpine) 98,6 МБ аст, дар ҳоле ки тасвири бефосилаи дар мисол истифодашуда 50,9 МБ аст.

Бояд қайд кард, ки дар мисоли қаблӣ мо тамоми каталогро нусхабардорӣ мекунем /usr/local/lib/python3.7/site-packages, ки метавонад вобастагиҳое дошта бошад, ки ба мо лозим нестанд. Гарчанде ки маълум аст, ки фарқияти андозаи ҳамаи тасвирҳои мавҷудаи Python гуногун аст.

Ҳангоми навиштан, Google distroless бисёр тасвирҳоро дастгирӣ намекунад: Java ва Python ҳанӯз дар марҳилаи таҷрибавӣ ҳастанд ва Python танҳо барои 2,7 ва 3,5 мавҷуд аст.

Тасвирҳои хурд

Бозгашт ба васвоси ман бо эҷоди тасвирҳои хурд.

Умуман, ман мехостам бубинам, ки чӣ гуна тасвирҳои бесамар сохта мешаванд. Лоиҳаи беасос асбоби сохтани Google-ро истифода мебарад bazel. Бо вуҷуди ин, насб кардани Bazel ва навиштани тасвирҳои худ кори зиёдеро талаб кард (ва ростқавлона, аз нав ихтироъ кардани чарх шавқовар ва таълимӣ аст). Ман мехостам эҷоди тасвирҳои хурдтарро содда кунам: амали эҷоди тасвир бояд хеле содда бошад, баналӣ. Барои он ки барои шумо файлҳои конфигуратсия вуҷуд надошта бошад, танҳо як сатр дар консол: просто собрать образ для <приложение>.

Пас, агар шумо хоҳед, ки тасвирҳои шахсии худро эҷод кунед, пас бидонед: чунин тасвири беназири докер вуҷуд дорад, scratch. Scratch тасвири "холӣ" аст, дар он файлҳо вуҷуд надоранд, гарчанде ки он ба таври нобаёнӣ вазн дорад - вой! - 77 байт.

FROM scratch

Тасвири харошидан

Идеяи тасвири сифр дар он аст, ки шумо метавонед ҳама гуна вобастагиҳоро аз мошини ҳост ба он нусхабардорӣ кунед ва ё онҳоро дар дохили Dockerfile истифода баред (ин ба монанди нусхабардории онҳо ба apt ва аз сифр насб кунед) ё дертар вақте ки тасвири Docker амалӣ мешавад. Ин ба шумо имкон медиҳад, ки мундариҷаи контейнери Docker-ро пурра назорат кунед ва ба ин васила андозаи тасвирро пурра назорат кунед.

Ҳоло ба мо лозим аст, ки бо кадом роҳ ин вобастагиҳоро ҷамъ кунем. Воситахои мавчуда монанди apt ба шумо имкон медиҳад, ки бастаҳоро зеркашӣ кунед, аммо онҳо ба мошини ҷорӣ пайвастанд ва дар ниҳоят, дастгирӣ намекунанд Windows ё MacOS.

Аз ин рӯ, ман қарор додам, ки асбоби худро созам, ки ба таври худкор тасвири асосиро бо андозаи хурдтарин месозад ва онро барои иҷрои ҳама гуна барномаҳо водор мекунад. Ман аз бастаҳо истифода кардам. Ubuntu/Debian, интихобро анҷом дод (бастаҳоро мустақиман аз анборҳо гирифтан) ва ба таври рекурсивӣ вобастагиҳои онҳоро ёфт. Барнома бояд ба таври худкор версияи охирини устувори бастаро зеркашӣ мекард ва хатарҳои амниятиро ба ҳадди ақалл мерасонд.

Ман асбобро номбар кардам fetchy, зеро вай... дарьёфт карда меорад... он чи лозим аст [аз англисӣ "овардан", "овардан" - тақрибан. хати]. Восита тавассути интерфейси сатри фармон кор мекунад, аммо дар айни замон API пешниҳод мекунад.

Барои ҷамъ кардани тасвир бо истифода аз fetchy (биёед ин дафъа тасвири Python-ро гирем), ба шумо танҳо лозим аст, ки CLI-ро чунин истифода баред: fetchy dockerize python. Шояд аз шумо системаи амалиётии мақсаднок ва номи кодро талаб кунанд, зеро fetchy айни замон танҳо бастаҳоро дар асоси Debian и Ubuntu.

Акнун шумо метавонед интихоб кунед, ки кадом вобастагӣ умуман лозим нест (дар контексти мо) ва онҳоро истисно кунед. Масалан, Python аз Perl вобаста аст, гарчанде ки он бе насби Perl хуб кор мекунад.

натиҷаҳои

Тасвири Python бо истифода аз фармон сохта шудааст fetchy dockerize python3.5 вазнаш ҳамагӣ 35 МБ (ман беш аз он боварӣ дорам, ки дар оянда онро боз ҳам сабуктар кардан мумкин аст). Маълум мешавад, ки мо тавонистем боз 15 WW-ро аз тасвири бефосила канда кунем.

Шумо метавонед ҳамаи тасвирҳоеро, ки то имрӯз ҷамъ оварда шудаанд, дидан кунед дар ин ҷо.

Лоиҳа - дар ин ҷо.

Агар шумо хусусиятҳо надошта бошед, танҳо дархост эҷод кунед - ман бо камоли майл кӯмак хоҳам кард :) Ҳатто бештар, ман дар айни замон дар бораи ҳамгиро кардани дигар менеҷерҳои бастаҳо ба фоҷиа кор карда истодаам, то ба сохтани бисёрмарҳила эҳтиёҷ надошта бошад.

Манбаъ: will.com

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster