Íomhánna Tiny Docker a chreid iontu féin*

[tagairt don scéal fairy leanaí Meiriceánach "The Little Engine That Could" - thart. lána]*

Íomhánna Tiny Docker a chreid iontu féin*

Conas íomhánna Docker beaga a chruthú go huathoibríoch do do chuid riachtanas

Obsession Neamhghnách

Le cúpla mí anuas, tá mé obsessed le chomh beag agus is féidir íomhá Docker a bheith agus fós a bhfuil an t-iarratas ar siúl?

Tuigim, tá an smaoineamh aisteach.

Sula rachaidh mé isteach ar na sonraí agus ar na gnéithe teicniúla, ba mhaith liom a mhíniú cén fáth ar chuir an fhadhb seo an oiread sin isteach orm, agus ar an gcaoi a mbaineann sé leat.

Cén fáth a bhfuil tábhacht le méid

Trí laghdú a dhéanamh ar ábhar íomhá an Docker, laghdóimid liosta na leochaileachtaí dá bharr. Ina theannta sin, déanaimid na híomhánna níos glaine, toisc nach bhfuil iontu ach an méid is gá chun feidhmchláir a rith.

Tá buntáiste beag amháin eile ann - déantar íomhánna a íoslódáil beagán níos tapúla, ach, i mo thuairim, níl sé seo chomh tábhachtach.

Tabhair faoi deara le do thoil: Má tá imní ort faoi mhéid, tá na cuma Alpach féin beag agus is dócha go n-oirfidh siad duit.

Íomhánna gan staonadh

Tionscadal gan staonadh cuireann sé rogha d’íomhánna bunúsacha “gan staonadh” ar fáil, níl bainisteoirí pacáiste, sliogáin agus fóntais eile iontu a bhfuil tú cleachta leo a fheiceáil ar an líne ordaithe. Mar thoradh air sin, bain úsáid as bainisteoirí pacáiste mar pip и apt ní oibreoidh:

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

Dockerfile ag baint úsáide as Python 3 íomhá distroless

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

Níl Pip san íomhá

De ghnáth réitítear an fhadhb seo le tógáil ilchéime:

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/

Tionól ilchéime

Is é an toradh íomhá 130MB i méid. Níl sé úafasach! Chun comparáid a dhéanamh: meáchan íomhá réamhshocraithe Python 929MB, agus an ceann “níos tanaí” (3,7-slim) - 179MB, íomhá alpach (3,7-alpine) ná 98,6MB, agus is é 50,9MB an bhuníomhá gan staonadh a úsáidtear sa sampla.

Is cóir a chur in iúl go bhfuil eolaire iomlán á chóipeáil againn sa sampla roimhe seo /usr/local/lib/python3.7/site-packages, a bhféadfadh spleáchais nach bhfuil de dhíth orainn a bheith iontu. Cé go bhfuil sé soiléir go n-athraíonn difríocht mhéid na n-íomhánna bonn Python go léir atá ann cheana féin.

Ag an am seo á scríobh, ní thacaíonn Google distroless go leor íomhánna: tá Java agus Python fós ag an gcéim thurgnamhach, agus níl Python ann ach le haghaidh 2,7 agus 3,5.

Pictiúir lúide

Ar ais go dtí mo obsession le cruthú íomhánna beaga.

Go ginearálta, bhí mé ag iarraidh a fheiceáil conas a thógtar íomhánna gan staonadh. Úsáideann an tionscadal distroless uirlis tógála Google bazel. Mar sin féin, ghlac go leor oibre le suiteáil Bazel agus le do chuid íomhánna féin a scríobh (agus le bheith macánta, tá sé spraoi agus oideachasúil an roth a athchruthú). Bhí mé ag iarraidh cruthú na n-íomhánna níos lú a shimpliú: ba chóir go mbeadh an gníomh chun íomhá a chruthú thar a bheith simplí, banail. Ionas nach bhfuil aon chomhaid chumraíochta ann duit, níl ach líne amháin sa chonsól: просто собрать образ для <приложение>.

Mar sin, más mian leat do chuid íomhánna féin a chruthú, bíodh a fhios agat: tá íomhá docker chomh uathúil ann, scratch. Is íomhá “folamh” é Scratch, níl aon chomhaid inti, cé go bhfuil meáchan ann de réir réamhshocraithe - wow! - 77 beart.

FROM scratch

Íomhá scratch

Is é an smaoineamh atá le híomhá scríobtha ná gur féidir leat aon spleáchais ón meaisín óstaigh a chóipeáil isteach ann agus iad a úsáid taobh istigh de Dockerfile (tá sé seo cosúil le iad a chóipeáil go apt agus a shuiteáil ón tús), nó níos déanaí nuair a bhíonn an íomhá Docker réadaithe. Ligeann sé seo duit ábhar an choimeádáin Docker a rialú go hiomlán, agus mar sin rialú iomlán a dhéanamh ar mhéid na híomhá.

Anois caithfimid na spleáchais sin a bhailiú ar bhealach éigin. Is maith le huirlisí atá ann cheana féin apt ligeann duit pacáistí a íoslódáil, ach tá siad ceangailte leis an meaisín reatha agus, tar éis an tsaoil, ní thacaíonn siad le Windows nó MacOS.

Mar sin leag mé amach m'uirlis féin a thógáil a thógfadh íomhá bonn go huathoibríoch den mhéid is lú is féidir agus a reáchtálfadh feidhmchlár ar bith freisin. Bhain mé úsáid as pacáistí Ubuntu/Debian, rinne mé rogha (pacáistí a fháil go díreach ó na stórtha) agus fuair mé a gcuid spleáchais go hathchúrsach. Bhí an clár ceaptha an leagan cobhsaí is déanaí den phacáiste a íoslódáil go huathoibríoch, ag laghdú rioscaí slándála a oiread agus is féidir.

D'ainmnigh mé an uirlis fetchy, toisc go bhfaighidh sé agus go dtugann sé ... cad atá ag teastáil [ón mBéarla “beir”, “beir leat” - approx. lána]. Oibríonn an uirlis trí chomhéadan líne ordaithe, ach cuireann API ar fáil ag an am céanna.

Chun íomhá a chur le chéile ag baint úsáide as fetchy (Tógfaimid íomhá Python an uair seo), níl le déanamh agat ach an CLI a úsáid mar seo: fetchy dockerize python. Seans go n-iarrfar ort an spriocchóras oibriúcháin agus an códainm mar gheall ar fetchy faoi ​​láthair ní úsáideann ach pacáistí atá bunaithe ar Debian agus Ubuntu.

Anois is féidir leat a roghnú cé na spleáchais nach bhfuil ag teastáil ar chor ar bith (inár gcomhthéacs) agus iad a eisiamh. Mar shampla, braitheann Python ar perl, cé go n-oibríonn sé go breá gan Perl a shuiteáil.

Torthaí

Íomhá Python cruthaithe ag baint úsáide as an ordú fetchy dockerize python3.5 meáchan ach 35MB (Tá mé níos mó ná cinnte gur féidir é a dhéanamh fiú níos éadroime sa todhchaí). Tharlaíonn sé go raibh a bhainistiú againn a shave amach 15 WW eile as an íomhá distroless.

Is féidir leat na híomhánna go léir a bailíodh go dtí seo a fheiceáil anseo.

Tionscadal - anseo.

Má tá gnéithe in easnamh ort, níl ort ach iarratas a chruthú - beidh mé sásta cabhrú leat :) Níos mó fós, táim ag obair faoi láthair ar bhainisteoirí pacáiste eile a chomhtháthú i fetchy, ionas nach mbeidh gá le tógáil ilchéime.

Foinse: will.com

Add a comment