Zithunzi ting'onoting'ono za Docker zomwe zimadzikhulupirira zokha*

[zonena za nthano ya ana aku America "Injini Yaing'ono Imene Imatha" - pafupifupi. njira]*

Zithunzi ting'onoting'ono za Docker zomwe zimadzikhulupirira zokha*

Momwe mungapangire zithunzi zazing'ono za Docker pazosowa zanu

Kutengeka Mwachilendo

Kwa miyezi ingapo yapitayi, ndakhala ndikuchita chidwi ndi momwe chithunzi cha Docker chingakhale chaching'ono ndikugwiritsabe ntchito?

Ndikumvetsa, lingalirolo ndi lachilendo.

Ndisanalowe mwatsatanetsatane ndi luso, ndikufuna ndikufotokozereni chifukwa chomwe vutoli lili losangalatsa kwa ine, komanso momwe likukukhudzani.

Chifukwa chiyani kukula kuli kofunika

Pochepetsa zomwe zili pachithunzi cha Docker, potero timachepetsa mndandanda wazowopsa. Kuonjezera apo, timapanga zithunzizo kukhala zoyera, chifukwa zimakhala ndi zomwe zimafunikira kuti tigwiritse ntchito mapulogalamu.

Pali mwayi wina wocheperako - zithunzi zimatsitsidwa mwachangu, koma, m'malingaliro mwanga, izi sizofunikira.

Chonde dziwani: Ngati mukukhudzidwa ndi kukula, ma Alpine amawoneka ochepa ndipo angakukwanireni.

Zithunzi zopanda malire

Project Distroless imapereka zosankha zazithunzi zoyambira "zopanda pake", mulibe oyang'anira phukusi, zipolopolo ndi zinthu zina zomwe mumakonda kuziwona pamzere wolamula. Chifukwa chake, gwiritsani ntchito oyang'anira phukusi ngati pip и apt sizigwira ntchito:

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

Dockerfile pogwiritsa ntchito Python 3 distroless image

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 sali pachithunzichi

Nthawi zambiri vutoli limathetsedwa ndi masitepe ambiri:

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/

Msonkhano wamagulu ambiri

Zotsatira zake ndi chithunzi cha 130MB kukula. Osati zoipa kwambiri! Poyerekeza: chithunzi chosasinthika cha Python chimalemera 929MB, ndipo "choonda" chimodzi (3,7-slim) - 179MB, chithunzi cha alpine (3,7-alpine) ndi 98,6MB, pomwe chithunzi chopanda kanthu chomwe chagwiritsidwa ntchito pachitsanzo ndi 50,9MB.

Ndikoyenera kunena kuti mu chitsanzo chapitachi tikukopera chikwatu chonse /usr/local/lib/python3.7/site-packages, zomwe zingakhale ndi zodalira zomwe sitikuzifuna. Ngakhale zikuwonekeratu kuti kusiyana kwa kukula kwa zithunzi zonse za Python zomwe zilipo zimasiyana.

Panthawi yolemba, Google distroless sigwirizana ndi zithunzi zambiri: Java ndi Python akadali pa siteji yoyesera, ndipo Python imangopezeka 2,7 ndi 3,5.

Zithunzi zazing'ono

Bwererani ku kutengeka kwanga ndikupanga zithunzi zazing'ono.

Nthawi zambiri, ndimafuna kuwona momwe zithunzi zopanda pake zimapangidwira. Pulojekiti yopanda malire imagwiritsa ntchito chida chomanga cha Google bazel. Komabe, kukhazikitsa Bazel ndikulemba zithunzi zanu kunatenga ntchito yambiri (ndipo kunena zoona kwathunthu, kubwezeretsanso gudumu ndikosangalatsa komanso kophunzitsa). Ndinkafuna kupeputsa kupanga zithunzi zing'onozing'ono: kupanga chithunzi chiyenera kukhala chophweka kwambiri, banal. Kotero kuti palibe mafayilo osinthira kwa inu, mzere umodzi wokha mu console: просто собрать образ для <приложение>.

Chifukwa chake, ngati mukufuna kupanga zithunzi zanu, dziwani: pali chithunzi chapadera chotere, scratch. Scratch ndi chithunzi "chopanda kanthu", mulibe mafayilo mkati mwake, ngakhale amalemera mwachisawawa - wow! - 77 baiti.

FROM scratch

Kanda chithunzi

Lingaliro lachithunzi choyambira ndikuti mutha kukopera zodalira zilizonse kuchokera pamakina omwe amalandilamo ndikuzigwiritsa ntchito mkati mwa Dockerfile (izi zili ngati kuwakopera ku apt ndikukhazikitsa kuyambira pachiyambi), kapena pambuyo pake chithunzi cha Docker chikapangidwa. Izi zimakupatsani mwayi wowongolera zonse zomwe zili muchotengera cha Docker, ndikuwongolera kwathunthu kukula kwa chithunzicho.

Tsopano tiyenera mwanjira ina kusonkhanitsa zodalira izi. Zida zomwe zilipo ngati apt amakulolani kutsitsa mapaketi, koma amamangiriridwa pamakina omwe alipo ndipo, pambuyo pake, samathandizira Windows kapena MacOS.

Chifukwa chake ndidayamba kupanga chida changa chomwe chimangopanga chithunzi chocheperako chaching'ono kwambiri ndikuyendetsa ntchito iliyonse. Ndinagwiritsa ntchito phukusi la Ubuntu / Debian, ndinasankha (kulandira phukusi mwachindunji kuchokera kumalo osungirako zinthu) ndipo ndinapezanso kudalira kwawo. Pulogalamuyi idayenera kutsitsa pulogalamu yaposachedwa kwambiri ya phukusili, ndikuchepetsa zoopsa zachitetezo momwe ndingathere.

Chidacho ndinachitcha fetchy, chifukwa iye... amapeza ndi kubweretsa... zofunika [kuchokera ku Chingerezi "tenga", "bweretsa" - pafupifupi. msewu]. Chidacho chimagwira ntchito pogwiritsa ntchito mzere wolamula, koma nthawi yomweyo imapereka API.

Kupanga chithunzi pogwiritsa ntchito fetchy (tiyeni titenge chithunzi cha Python nthawi ino), muyenera kungogwiritsa ntchito CLI monga chonchi: fetchy dockerize python. Mutha kufunsidwa kuti mugwiritse ntchito chandamale ndi codename chifukwa fetchy pakadali pano amangogwiritsa ntchito phukusi lochokera pa Debian ndi Ubuntu.

Tsopano mutha kusankha zomwe zimadalira zomwe sizikufunika konse (m'nkhani yathu) ndikuzipatula. Mwachitsanzo, Python imadalira perl, ngakhale imagwira ntchito bwino popanda Perl kuyika.

Zotsatira

Chithunzi cha Python chopangidwa pogwiritsa ntchito lamulo fetchy dockerize python3.5 imalemera 35MB yokha (ndikutsimikiza kuti m'tsogolomu ikhoza kukhala yopepuka). Zinapezeka kuti tidatha kumeta wina 15 WW kuchokera pachithunzi chosawonongeka.

Mutha kuwona zithunzi zonse zomwe zasonkhanitsidwa mpaka pano apa.

Pulojekiti - apa.

Ngati mukusowa mawonekedwe, ingopangani pempho - Ndidzakhala wokondwa kuthandiza :) Ngakhalenso, ndikugwira ntchito yophatikiza oyang'anira ma phukusi ena mu fetchy, kotero kuti palibe chifukwa chomanga masitepe ambiri.

Source: www.habr.com

Kuwonjezera ndemanga