[e pili ana i ka moʻolelo moʻolelo a nā keiki ʻAmelika "The Little Engine That Could" - approx. ala]*
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
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
Papahana -
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