
Mar a chruthaicheas tu ìomhaighean beaga bìodach Docker gu fèin-ghluasadach airson do fheumalachdan
Obsession neo-àbhaisteach
Airson an dà mhìos a dh’fhalbh, tha mi air a bhith air mo ghlacadh leis a’ bheachd seo: dè an ìre nas lugha as urrainn ìomhaigh Docker a bhith agus an aplacaid a dhèanamh ag obair fhathast?
Tha mi a' tuigsinn, tha am beachd neònach.
Mus tèid mi a-steach do na mion-fhiosrachadh agus na teicnigeachdan, bu mhath leam mìneachadh carson a tha an cùis seo cho inntinneach dhomh agus mar a bheir e buaidh ort.
Carson a tha meud cudromach
Le bhith a’ lughdachadh susbaint ìomhaigh Docker, bidh sinn a’ lughdachadh an liosta de laigsean. Bidh sinn cuideachd a’ dèanamh ìomhaighean nas glaine, oir chan eil annta ach na tha a dhìth airson aplacaidean a ruith.
Tha buannachd bheag eile ann - bidh ìomhaighean a’ luchdachadh sìos beagan nas luaithe, ach nam bheachd-sa chan eil seo cho cudromach.
Thoir an aire: Ma tha dragh ort mu mheud, tha na h-ìomhaighean Alpine fhèin beag agus tha coltas ann gun tig iad ort.
Dealbhan gun Distro
a’ tabhann taghadh de dhealbhan bunaiteach “gun distro”; chan eil manaidsearan pacaid, sligean, no goireasan eile annta a tha thu cleachdte ri fhaicinn anns an loidhne-àithne. Mar thoradh air an sin, le bhith a’ cleachdadh manaidsearan pacaid mar pip и apt cha bhith e ag obair:
FROM gcr.io/distroless/python3
RUN pip3 install numpyDockerfile a’ cleachdadh ìomhaigh Python 3 gun distro
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 foundChan eil Pip san dealbh
Mar as trice, thèid an duilgheadas seo fhuasgladh le co-chruinneachadh ioma-ìre:
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/Co-chruinneachadh ioma-ìre
Tha an ìomhaigh a thig às a sin 130MB ann am meud. Chan eil sin ro dhona! Mar choimeas, tha an ìomhaigh Python bunaiteach a’ cuideam 929MB, agus am fear “caol” (3,7-slim) - 179MB, ìomhaigh alpach (3,7-alpine) — 98,6 MB, agus is e 50,9 MB an ìomhaigh bunaiteach gun distro a chaidh a chleachdadh san eisimpleir.
Faodar a chomharrachadh gu ceart gu bheil sinn san eisimpleir roimhe seo a’ dèanamh lethbhreac de eòlaire slàn /usr/local/lib/python3.7/site-packages, a dh’ fhaodadh a bhith an urra ri eisimeileachdan nach eil feum againn orra. Ach, tha e soilleir gu bheil an diofar meud eadar na h-ìomhaighean bunaiteach Python uile a tha ann mar-thà ag atharrachadh.
Aig àm sgrìobhaidh seo, chan eil Google distroless a’ toirt taic do mhòran ìomhaighean: tha Java agus Python fhathast deuchainneach, agus chan eil Python ann ach airson 2,7 agus 3,5.
Dealbhan beaga bìodach
Tillidh sinn air ais chun mo bhuaireadh le bhith a’ cruthachadh ìomhaighean beaga.
Gu dearbh, bha mi airson faicinn mar a tha ìomhaighean gun distro air an structaradh. Bidh am pròiseact gun distro a’ cleachdadh inneal togail Google. bazelAch, thug stàladh Bazel agus cruthachadh mo dhealbhan fhèin beagan oidhirp (agus a bhith gu tur onarach, tha ath-chruthachadh na rotha spòrsail agus foghlaim). Bha mi airson cruthachadh ìomhaighean nas lugha a dhèanamh nas sìmplidhe: bu chòir gnìomh cruthachadh ìomhaigh a bhith gu math sìmplidh, banalMar sin chan eil faidhlichean rèiteachaidh ann dhut, dìreach aon loidhne anns a’ chonsól: просто собрать образ для <приложение>.
Mar sin, ma tha thu airson na h-ìomhaighean agad fhèin a chruthachadh, bi mothachail gu bheil ìomhaigh docker cho sònraichte ann, scratch'S e ìomhaigh "falamh" a th' ann an Scratch; chan eil faidhlichean ann, ged a tha cuideam - wow! - 77 bytes ann gu bunaiteach.
FROM scratchÌomhaigh sgrìobte
Is e am beachd air cùl na h-ìomhaigh sgrìobte gum faod thu lethbhreac a dhèanamh de dh’eisimeileachdan sam bith bhon inneal aoigheachd a-steach innte agus an cleachdadh taobh a-staigh an Dockerfile (tha sin coltach ri bhith gan lethbhreacadh gu apt agus stàlaich bhon fhìor thoiseach), no nas fhaide air adhart, aon uair ‘s gu bheil ìomhaigh Docker air a chruthachadh. Leigidh seo le smachd iomlan a bhith agad air susbaint soitheach Docker, agus mar sin smachd iomlan air meud na h-ìomhaigh.
A-nis feumaidh sinn na h-eisimeileachdan sin a chruinneachadh ann an dòigh air choireigin. Innealan a th’ ann mar-thà mar apt leigidh iad leat pacaidean a luchdachadh sìos, ach tha iad ceangailte ris a’ choimpiutair làithreach agus, mu dheireadh, chan eil iad a’ toirt taic do Windows no MacOS.
Mar sin chuir mi romham inneal fhìn a thogail a thogadh ìomhaigh bunaiteach den mheud as lugha a ghabhadh gu fèin-ghluasadach agus a ruitheadh aplacaid sam bith fhathast. Chleachd mi pacaidean Ubuntu/Debian, chruthaich mi taghadh (a’ faighinn pacaidean air ais gu dìreach bho na stòran-dàta), agus lorg mi na h-eisimeileachdan aca gu ath-chuairteach. Bha am prògram an dùil an dreach seasmhach as ùire den phacaid a luchdachadh sìos gu fèin-ghluasadach, a’ lughdachadh chunnartan tèarainteachd.
Thug mi ainm air an inneal fetchy, oir… lorgas agus bheir e… na tha a dhìth [bhon Bheurla "fetch", "to give" — eadar-theangachadh. notaBidh an inneal ag obair tro eadar-aghaidh loidhne-àithne, ach tha API ann cuideachd.
Gus ìomhaigh a chur ri chèile le bhith a’ cleachdadh fetchy (gabhaidh sinn ìomhaigh Python an turas seo), chan fheum thu ach an CLI a chleachdadh mar seo: fetchy dockerize pythonDh’fhaodadh gun tèid iarraidh ort an siostam obrachaidh targaid agus ainm a’ chòd a thoirt seachad oir fetchy chan eil e a’ cleachdadh ach pacaidean stèidhichte air Debian agus Ubuntu an-dràsta.
A-nis faodaidh tu taghadh dè na h-eisimeileachdan a tha gu tur neo-riatanach (nar co-theacsa) agus an cuir às. Mar eisimpleir, tha Python an urra ri Perl, ged a bhios e ag obair gu foirfe às aonais Perl air a stàladh.
Toraidhean
Ìomhaigh Python air a chruthachadh a’ cleachdadh an àithne fetchy dockerize python3.5 Chan eil ann ach 35MB de chuideam (tha mi cinnteach gum faodar a dhèanamh eadhon nas aotroime san àm ri teachd). Mar sin, fhuair sinn air 15MB eile a thoirt far an ìomhaigh gun distro.
Faodaidh tu na h-ìomhaighean uile a chaidh a chruinneachadh gu ruige seo fhaicinn. .
Pròiseact - .
Mura h-eil feartan agad, dìreach cruthaich iarrtas—bidh mi toilichte do chuideachadh :) A bharrachd air an sin, tha mi an-dràsta ag obair air manaidsearan pacaid eile a thoirt a-steach do fetchy, gus nach bi feum air togail ioma-ìre.
Source: www.habr.com
