Mifananidzo midiki yeDocker yaitenda mukati mavo*

[kureva ngano yevana veAmerica "Injini Idiki Yaigona" - approx. mugwagwa]*

Mifananidzo midiki yeDocker yaitenda mukati mavo*

Maitiro ekugadzira otomatiki maDocker mifananidzo kune zvaunoda

Unusual Obsession

Kwemwedzi mishoma yadarika, ndanga ndichinetsekana nekuita mudiki mufananidzo weDocker uye uchiri kuita application?

Ndinonzwisisa, pfungwa yacho inoshamisa.

Ndisati ndapinda mune ruzivo uye tekinoroji, ndinoda kutsanangura kuti sei dambudziko iri rakandishungurudza zvakanyanya, uye kuti rinokunetsa sei.

Nei saizi yakakosha

Nekudzikisa zviri mukati meiyo Docker mufananidzo, isu nokudaro tinoderedza runyorwa rwekusagadzikana. Pamusoro pezvo, tinoita kuti mifananidzo ive yakachena, nekuti ine chete izvo zvinodikanwa kuita maapplication.

Pane imwezve diki mukana - mifananidzo inotorwa nekukurumidza zvishoma, asi, mumaonero angu, izvi hazvina kukosha.

Ndokumbira utarise: Kana iwe uine hanya nehukuru, iyo Alpine inotaridzika pachayo idiki uye inogona kukukodzera iwe.

Distroless mifananidzo

Project Distroless inopa kusarudzwa kweiyo yekutanga "distroless" mifananidzo, haina mamaneja emapaketi, mabhomba uye zvimwe zvinoshandiswa zvaunojaira kuona pamutsara wekuraira. Nekuda kweizvozvo, shandisa mapakeji maneja senge pip ΠΈ apt hazvishande:

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

Dockerfile uchishandisa Python 3 distroless mufananidzo

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 haisi mumufananidzo

Kazhinji dambudziko iri rinogadziriswa neakawanda-nhanho kuvaka:

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/

Multi-stage assembly

Mhedzisiro yacho mufananidzo we130MB muhukuru. Hazvina kunyanya kuipa! Kuenzanisa: iyo default Python mufananidzo unorema 929MB, uye iyo "yakaonda" imwe (3,7-slim) - 179MB, mufananidzo wealpine (3,7-alpine) is 98,6MB, ukuwo base distroless image inoshandiswa mumuenzaniso i50,9MB.

Zvakanaka kutaura kuti mumuenzaniso wapfuura tiri kukopa dhairekitori rese /usr/local/lib/python3.7/site-packages, iyo inogona kunge iine zvinotsamira zvatisingade. Kunyangwe zviri pachena kuti mutsauko wehukuru hweese aripo Python base mifananidzo inosiyana.

Panguva yekunyora, Google distroless haitsigire mifananidzo yakawanda: Java nePython zvichiri padanho rekuyedza, uye Python inongowanikwa ye2,7 uye 3,5.

Mifananidzo midiki

Kudzokera kushungu dzangu nekugadzira mifananidzo midiki.

Kazhinji, ndaida kuona kuti mifananidzo isina tsvina inovakwa sei. Iyo distroless purojekiti inoshandisa Google kuvaka chishandiso bazel. Nekudaro, kuisa Bazel nekunyora yako mifananidzo kwakatora basa rakawanda (uye kutaura chokwadi, kudzoreredza vhiri kunonakidza uye kunodzidzisa). Ini ndaida kurerutsa kusikwa kwemifananidzo midiki: chiitiko chekugadzira chifananidzo chinofanira kunge chiri nyore kwazvo, banal. Zvekuti hapana mafaera ekugadzirisa ako, mutsara mumwe chete mukoni: просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· для <ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅>.

Saka, kana iwe uchida kugadzira yako mifananidzo, saka ziva: kune yakasarudzika docker mufananidzo, scratch. Scratch "isina chinhu" mufananidzo, hapana mafaera mairi, kunyangwe ichirema nekusarudzika - wow! - 77 bytes.

FROM scratch

Kukwenya mufananidzo

Pfungwa yemufananidzo wekukwenya ndeyekuti iwe unokwanisa kutevedzera chero zvinotsamira kubva kumushini wekutambira mukati mayo uye wozvishandisa mukati meDockerfile (izvi zvakafanana nekuzvikopa kune apt uye isa kubva pakatanga), kana gare gare kana mufananidzo weDocker waitwa. Izvi zvinokutendera kuti unyatso kudzora zviri mukati meDocker mudziyo, uye nekudaro kudzora zvizere saizi yemufananidzo.

Iye zvino tinofanira kuunganidza izvi zvinotsamira. Zvishandiso zviripo senge apt inokutendera kuti utore mapakeji, asi akasungirirwa kumuchina wazvino uye, shure kwezvose, hautsigire Windows kana MacOS.

Saka ndakagadzirira kuvaka chishandiso changu chaizongovaka chifananidzo chediki diki uye mhanyisa chero application. Ndakashandisa Ubuntu / Debian mapakeji, ndakaita sarudzo (kutora mapakeji zvakananga kubva kumatura) uye ndakawanazve kutsamira kwavo. Chirongwa ichi chaifanirwa kudhawunirodha yazvino yakagadzikana vhezheni yepakeji, ichidzikisa njodzi dzekuchengetedza zvakanyanya sezvinobvira.

chombo chacho ndakachitumidza fetchy, nokuti iye... anowana uye anounza... chinodiwa [kubva kuChirungu "tora", "uya" - approx. lane]. Chishandiso chinoshanda kuburikidza nekuraira mutsara interface, asi panguva imwechete inopa API.

Kuunganidza mufananidzo uchishandisa fetchy (ngatitorei mufananidzo wePython panguva ino), unongoda kushandisa CLI seizvi: fetchy dockerize python. Iwe unogona kubvunzwa kune yakananga sisitimu yekushandisa uye codename nekuti fetchy parizvino inoshandisa mapakeji akavakirwa paDebian uye Ubuntu.

Iye zvino unogona kusarudza kuti ndezvipi zvinotsamira zvisingadiwe zvachose (mumamiriro edu ezvinhu) uye usazvibatanidze. Semuenzaniso, Python inoenderana neperl, kunyangwe ichishanda zvakanaka isina Perl yakaiswa.

Mhinduro

Python mufananidzo wakagadzirwa uchishandisa murairo fetchy dockerize python3.5 inorema 35MB chete (Ndine chokwadi chekuti mune ramangwana inogona kuitwa kunyange yakareruka). Zvinoitika kuti isu takakwanisa kuveura imwe 15 WW kubva pamufananidzo wakashata.

Iwe unogona kuona mifananidzo yese yakaunganidzwa kusvika zvino pano.

Project - pano.

Kana iwe usiri maficha, ingo gadzira chikumbiro - Ini ndichafara kubatsira :) Kunyanya, ini parizvino ndiri kushanda pakubatanidza mamwe mamaneja epakeji mu fetchy, kuitira kuti pasave nekudikanwa kwematanho akawanda ekuvaka.

Source: www.habr.com

Voeg