ʻO nā kiʻi Docker liʻiliʻi i manaʻoʻiʻo iā lākou iho *

[e pili ana i ka moʻolelo moʻolelo a nā keiki ʻAmelika "The Little Engine That Could" - approx. ala]*

ʻO nā kiʻi Docker liʻiliʻi i manaʻoʻiʻo iā lākou iho *

Pehea e hana maʻalahi ai i nā kiʻi Docker liʻiliʻi no kāu pono

Kūlana Kūʻē

No nā mahina i hala iho nei, ua nānā au i ka liʻiliʻi o kahi kiʻi Docker a ke holo nei ka noi?

Maopopo iaʻu, ʻano ʻē ka manaʻo.

Ma mua o koʻu komo ʻana i nā kikoʻī a me nā ʻenehana, makemake wau e wehewehe i ke kumu i pilikia nui ai kēia pilikia iaʻu, a pehea e pili ai iā ʻoe.

No ke aha ka nui

Ma ka hōʻemi ʻana i nā ʻike o ke kiʻi Docker, no laila mākou e hōʻemi i ka papa inoa o nā nāwaliwali. Eia hou, hoʻomaʻemaʻe mākou i nā kiʻi, no ka mea aia wale nō nā mea e pono ai e holo i nā noi.

Aia kekahi mea liʻiliʻi liʻiliʻi - hoʻoiho ʻia nā kiʻi me ka wikiwiki, akā, i koʻu manaʻo, ʻaʻole ia he mea nui.

E ʻoluʻolu: Inā hopohopo ʻoe e pili ana i ka nui, nānā ka Alpine iā lākou iho e holo liʻiliʻi a paʻa pono iā ʻoe.

Nā kiʻi distroless

Papahana Distroless hāʻawi i kahi koho o nā kiʻi "distroless" maʻamau, ʻaʻole lākou i loaʻa nā mana hoʻokele, nā pūpū a me nā mea pono ʻē aʻe āu e ʻike ai ma ka laina kauoha. ʻO ka hopena, e hoʻohana i nā mana hoʻokele like pip и apt ʻaʻole e hana:

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

Dockerfile me ka Python 3 distroless kiʻi

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

ʻAʻole ʻo Pip i ke kiʻi

Hoʻopau maʻamau kēia pilikia e ka hana ʻana i nā pae he nui:

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/

Hui-nui-pae

ʻO ka hopena he kiʻi o 130MB ka nui. ʻAʻole ʻino loa! No ka hoʻohālikelike: ʻo 929MB ke kaumaha o ke kiʻi Python maʻamau, a ʻo ka "mea lahilahi" (3,7-slim) - 179MB, kiʻi alpine (3,7-alpine) he 98,6MB, aʻo ke kiʻi distroless kumu i hoʻohana ʻia ma ka laʻana he 50,9MB.

Maikaʻi ke kuhikuhi ʻana ma ka laʻana mua ke kope nei mākou i kahi papa kuhikuhi holoʻokoʻa /usr/local/lib/python3.7/site-packages, i loaʻa paha nā hilinaʻi i pono ʻole iā mākou. ʻOiai ua maopopo ka ʻokoʻa ka nui o nā kiʻi kumu Python āpau.

I ka manawa kākau, ʻaʻole kākoʻo ʻo Google distroless i nā kiʻi he nui: aia nō ʻo Java a me Python i ka pae hoʻokolohua, a ʻo Python wale nō no 2,7 a me 3,5.

Nā kiʻi liʻiliʻi

Hoʻi i koʻu manaʻo nui i ka hana ʻana i nā kiʻi liʻiliʻi.

Ma keʻano laulā, makemake wau e ʻike pehea i kūkulu ʻia ai nā kiʻi distroless. Hoʻohana ka papahana distroless i ka mea hana hana a Google bazel. Eia nō naʻe, ʻo ka hoʻokomo ʻana iā Bazel a me ke kākau ʻana i kāu mau kiʻi ponoʻī he nui ka hana (a ʻo ka ʻoiaʻiʻo, he leʻaleʻa a hoʻonaʻauao ka hana hou ʻana i ka huila). Makemake au e maʻalahi i ka hana ʻana i nā kiʻi liʻiliʻi: ʻo ka hana o ka hana ʻana i kiʻi e maʻalahi loa, palaka. No laila ʻaʻohe faila hoʻonohonoho no ʻoe, hoʻokahi laina i ka console: просто собрать образ для <приложение>.

No laila, inā makemake ʻoe e hana i kāu mau kiʻi ponoʻī, a laila e ʻike: aia kahi kiʻi docker kū hoʻokahi, scratch. ʻO Scratch kahi kiʻi "ʻole", ʻaʻohe faila i loko, ʻoiai ke kaupaona ʻia ma ke ʻano - wow! - 77 paika.

FROM scratch

Kiʻi ʻōpala

ʻO ka manaʻo o kahi kiʻi kiʻi hiki iā ʻoe ke kope i nā mea hilinaʻi mai ka mīkini hoʻokipa i loko a hoʻohana paha iā lākou i loko o kahi Dockerfile (e like me ke kope ʻana iā lākou i apt a hoʻokomo mai ka ʻohi ʻana), a i ʻole i ka wā i hoʻokumu ʻia ai ke kiʻi Docker. ʻAe kēia iā ʻoe e hoʻomalu piha i nā mea o ka pahu Docker, a pēlā e hoʻomalu pono ai i ka nui o ke kiʻi.

I kēia manawa pono mākou e hōʻiliʻili i kēia mau hilinaʻi. ʻO nā mea hana e kū nei e like me apt ʻae iā ʻoe e hoʻoiho i nā pūʻolo, akā pili lākou i ka mīkini o kēia manawa a, ma hope o nā mea āpau, ʻaʻole kākoʻo iā Windows a i ʻole MacOS.

No laila ua hoʻomaka wau e kūkulu i kaʻu mea hana ponoʻī e kūkulu ʻokoʻa i kahi kiʻi kumu o ka liʻiliʻi liʻiliʻi loa a holo pū kekahi i kekahi noi. Ua hoʻohana au i nā pūʻolo ʻo Ubuntu/Debian, hana i kahi koho (loaʻa pololei mai nā waihona) a loaʻa hou i kā lākou hilinaʻi. Ua manaʻo ʻia ka polokalamu e hoʻoiho ʻokoʻa i ka mana hou loa o ka pūʻolo, e hōʻemi ana i nā pilikia palekana e like me ka hiki.

Ua kapa wau i ka mea hana fetchy, no ka mea, ʻike ʻo ia a lawe mai ... i nā mea e pono ai [mai ka ʻōlelo Pelekania "kiʻi", "lawe mai" - approx. alahele]. Hana ka mea hana ma o ka laina kauoha, akā i ka manawa like e hāʻawi i kahi API.

No ka hui ʻana i kiʻi me ka hoʻohana ʻana fetchy (e lawe kāua i kahi kiʻi Python i kēia manawa), pono ʻoe e hoʻohana i ka CLI e like me kēia: fetchy dockerize python. E noi ʻia paha ʻoe no ka ʻōnaehana hana a me ka codename no ka mea fetchy i kēia manawa ke hoʻohana wale nei i nā pūʻolo e pili ana iā Debian a me Ubuntu.

I kēia manawa hiki iā ʻoe ke koho i nā mea hilinaʻi ʻaʻole pono (i kā mākou pōʻaiapili) a haʻalele iā lākou. No ka laʻana, pili ʻo Python i ka perl, ʻoiai e hana maikaʻi ana me ka ʻole o Perl i hoʻokomo ʻia.

Nā hualoaʻa

Hana ʻia ke kiʻi Python me ke kauoha fetchy dockerize python3.5 ʻO 35MB wale nō ke kaumaha (ʻoi aku au ma mua o ka maopopo i ka wā e hiki mai ana e hiki ke hoʻomaʻamaʻa ʻia). ʻIke ʻia ua hiki iā mākou ke kahi i kahi 15 WW hou mai ke kiʻi distroless.

Hiki iā ʻoe ke ʻike i nā kiʻi āpau i hōʻiliʻili ʻia i kēia manawa maanei.

Papahana - maanei.

Inā nele ʻoe i nā hiʻohiʻona, e hana wale i kahi noi - E hauʻoli wau e kōkua :) ʻOi aku, ke hana nei au i kēia manawa i ka hoʻohui ʻana i nā mana pūʻolo ʻē aʻe i fetchy, no laila ʻaʻohe mea e pono ai ke kūkulu ʻana i nā pae he nui.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka