Obere ihe onyonyo Docker kwenyere na onwe ha*

[ntụaka na akụkọ ifo ụmụaka America "The Little Engine That Could" - ihe dị ka. uzo]*

Obere ihe onyonyo Docker kwenyere na onwe ha*

Otu esi emepụta obere onyonyo Docker na-akpaghị aka maka mkpa gị

Mmasị na-adịghị ahụkebe

N'ime ọnwa ole na ole gara aga, a na-eche m ka otu onyonyo Docker si dị ntakịrị ma ka nwere ngwa ahụ?

Aghọtara m, echiche ahụ dị ịtụnanya.

Tupu m banye na nkọwa na teknụzụ, ọ ga-amasị m ịkọwa ihe kpatara nsogbu a na-ewute m nke ukwuu, yana otu o si metụta gị.

Gịnị mere size mkpa

Site na ibelata ọdịnaya nke onyonyo Docker, anyị si otú a belata ndepụta adịghị ike. Ọzọkwa, anyị na-eme ka ihe oyiyi dị ọcha, n'ihi na ha nwere naanị ihe achọrọ iji mee ngwa.

Enwere otu obere uru ọzọ - a na-ebudata ihe oyiyi ngwa ngwa, ma, n'echiche m, nke a adịghị mkpa.

Biko mara: Ọ bụrụ na ị na-eche banyere nha, Alpine anya onwe ha dị obere ma ọ ga-adabara gị.

Onyonyo na-enweghị atụ

Project enweghị nsogbu na-enye nhọrọ nke ihe oyiyi "enweghị mgbagha", ha enweghị ndị njikwa ngwugwu, shells na ihe ndị ọzọ ị na-eji na-ahụ na ahịrị iwu. N'ihi ya, jiri ndị njikwa ngwugwu dị ka pip и apt agaghị arụ ọrụ:

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

Dockerfile na-eji Python 3 foto enweghị isi

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

Pip adịghị na foto a

Ọtụtụ mgbe, a na-edozi nsogbu a site na nrụpụta ọtụtụ ọkwa:

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/

Mgbakọ ọtụtụ ọkwa

Nsonaazụ bụ onyonyo nke 130MB n'ogo. Ọ bụghị oke njọ! Maka ntụnyere: oyiyi Python nke ndabara na-atụ 929MB, yana nke “dị gịrịgịrị” (3,7-slim) - 179MB, foto alpine (3,7-alpine) bụ 98,6MB, ebe isi ihe onyonyo na-enweghị isi ejiri mee ihe atụ bụ 50,9MB.

Ọ dị mma ịkọwapụta na n'ihe atụ gara aga, anyị na-edegharị akwụkwọ ndekọ aha dum /usr/local/lib/python3.7/site-packages, nke nwere ike ịnwe dabere na anyị achọghị. Ọ bụ ezie na o doro anya na nha ọdịiche nke ihe oyiyi isi Python niile dị iche iche.

N'oge ederede, Google distroless anaghị akwado ọtụtụ onyonyo: Java na Python ka nọ na nnwale nnwale, Python dị naanị maka 2,7 na 3,5.

Obere onyonyo

Laghachi na mmasị m na imepụta obere onyonyo.

N'ozuzu, achọrọ m ịhụ ka e si arụ ihe oyiyi na-enweghị isi. Ihe oru ngo a na-emebi emebi na-eji ihe eji wuo ihe nke Google bazel. Otú ọ dị, ịwụnye Bazel na ide ihe oyiyi nke gị nwere ọtụtụ ọrụ (na n'eziokwu, ịmegharị wiil ahụ bụ ihe na-atọ ụtọ na nkuzi). Achọrọ m ime ka okike nke obere onyonyo dị mfe: omume nke imepụta onyonyo kwesịrị ịdị mfe nke ukwuu, banal. Ka enweghị faịlụ nhazi maka gị, naanị otu ahịrị na njikwa: просто собрать образ для <приложение>.

Yabụ, ọ bụrụ na ịchọrọ ịmepụta onyonyo nke gị, marakwa: enwere onyonyo docker pụrụ iche, scratch. Scratch bụ onyonyo "efu", enweghị faịlụ dị na ya, n'agbanyeghị na ọ na-atụ ya na ndabara - wow! - 77 bytes.

FROM scratch

Ikpochapu onyonyo

Echiche nke onyonyo ọkọwa bụ na ị nwere ike idetuo ihe ọ bụla dabere na igwe nnabata n'ime ya ma jiri ya n'ime Dockerfile (nke a dị ka iṅomi ha apt ma wụnye site na ọkọ), ma ọ bụ emechaa mgbe ihe oyiyi Docker pụtara. Nke a na-enye gị ohere ijikwa ihe dị n'ime akpa Docker kpamkpam, wee si otú a na-achịkwa nha oyiyi ahụ kpamkpam.

Ugbu a, anyị kwesịrị ịnakọta ndị a dabere. Ngwa dị dị ka apt na-enye gị ohere ibudata ngwugwu, mana ha na-ejikọta na igwe dị ugbu a na, mgbe niile, anaghị akwado Windows ma ọ bụ MacOS.

N'ihi ya, m malitere ịrụ ọrụ nke m nke ga-eme ka ihe oyiyi dị ala na-arụ ọrụ nke kacha nta ma mee ngwa ọ bụla. Eji m ngwugwu Ubuntu/Debian mee nhọrọ (na-enweta ngwugwu ozugbo site na ebe nchekwa) wee chọpụta na ha dabere. Ekwesịrị ka mmemme ahụ budata ụdị ngwungwu ahụ kwụsiri ike na-akpaghị aka, na-ebelata ihe egwu nchekwa dị ka o kwere mee.

Aha m aha ngwa ọrụ ahụ fetchy, n'ihi na ọ ... na-achọta ma na-eweta ... ihe a chọrọ [site na bekee "weta", "weta" - ihe ruru. uzo]. Ngwá ọrụ ahụ na-arụ ọrụ site na interface akara iwu, ma n'otu oge ahụ na-enye API.

Iji chịkọta onyonyo site na iji fetchy (ka anyị were foto Python oge a), naanị ị ga-eji CLI dị ka nke a: fetchy dockerize python. Enwere ike ịrịọ gị maka sistemụ arụmọrụ lekwasịrị anya yana codename n'ihi fetchy ugbu a na-eji naanị ngwugwu dabere na Debian na Ubuntu.

Ugbu a ị nwere ike họrọ nke dabere na-adịghị mkpa ma ọlị (na anyị onodu) na-ewepu ha. Dịka ọmụmaatụ, Python dabere na perl, ọ bụ ezie na ọ na-arụ ọrụ nke ọma na-enweghị arụnyere Perl.

Результаты

Ihe oyiyi Python mepụtara site na iji iwu ahụ fetchy dockerize python3.5 na-atụ naanị 35MB (Eji m n'aka na n'ọdịnihu ọ nwere ike ime ka ọ dịkwuo ọkụ). Ọ tụgharịrị na anyị jisiri ike kpụpụ WW 15 ọzọ site na onyonyo na-enweghị isi.

Ị nwere ike ịhụ onyonyo niile anakọtara ruo ugbu a ebe a.

oru ngo - ebe a.

Ọ bụrụ na ị na-efu atụmatụ, dị nnọọ mepụta arịrịọ - M ga-enwe obi ụtọ inyere :) Ọbụna ihe ọzọ, m na-arụ ọrụ ugbu a na integrating ndị ọzọ ngwugwu njikwa n'ime fetchy, nke mere na ọ dịghị mkpa maka multi-ogbo ewu.

isi: www.habr.com

Tinye a comment