Czesc, chce utworzyć algorytm do optymalizacji obrazu dockera na OS Linux. Pierwsze co mi przyszło na myśl to przygotowanie go do wyszukiwania wspólnych cech różnych obrazów i z nich budowania obrazów bazowych. Myślicie ze to dobry pomysł?, Moze macie przydatne rady, sugestie jak do tego podejść?

- Rejestracja:około 6 lat
- Ostatnio:3 dni
- Postów:517
Pierwsze co mi przyszło na myśl to przygotowanie go do wyszukiwania wspólnych cech różnych obrazów i z nich budowania obrazów bazowych
Przecież na tej zasadzie działa docker
- Rejestracja:ponad 2 lata
- Ostatnio:około rok
- Postów:5
chce aby przy tworzeniu obrazu dockera nie pobierał od nowa wszystkich paczek tylko sprawdzil i wykorzystał te które już są na systemie operacyjnym, aby ich nie duplikowal, dzięki czemu zmniejszy się rozmiar obrazu dockera.

- Rejestracja:około 6 lat
- Ostatnio:3 dni
- Postów:517
@Klaudia Balicka: Założeniem konteneryzacji jest, aby każdy kontener był odrębnym od środowiska na którym został uruchomiony.
Poza tym jeżeli chcesz współdzielić paczki to kontener dockerowy musiałby posiadać
taką samą konfigurację jak środowisko na którym on działa czyli jeżeli masz np. Ubuntu 20.04 jako host OS
to kontener dockerowy też musiałby hulać na 20.04 bo inaczej jakaś część paczek mogłaby nie działać.
Zatem to rozwiązanie działałoby tylko w bardzo wąskim zakresie przypadków, inaczej nadal jesteś zmuszona
pobierać paczki.

- Rejestracja:ponad 18 lat
- Ostatnio:dzień
- Lokalizacja:Rzeszów
na jakim systemie operacyjnym? na hoście? To tak nie zadziała, przecież dockera możesz odpalić na Debianie, a obraz jest na Alpine, tam paczki/binarki nie będą kompatybilne.
Poza tym czy coś pobierze się z neta czy "zduplikuje" (że niby z hosta) to i tak trafi ostatecznie na obraz.
Po to robisz obraz dockera, żeby wszystko wymagane do odpalenia aplikacji było już w obrazie.
Ale generalnie widzę u Ciebie podstawowe niezrozumienie dockera - optymalizacja rozmiaru obrazu to moim zdaniem krok na kiedyś - na razie naucz się samego dockera czy idei systemu operacyjnego.

- Rejestracja:prawie 5 lat
- Ostatnio:4 miesiące
- Postów:2420
Ludzie nie umieją z dokera korzystać...
Jak robi się obrazy dokerowe to zawsze ma sie hierarchie:
- Stockowy image z Linuxem
- Firmowy image na bazie poprzedniego pod konkretną technologię np. JVM
- Bazowy image pod konkretny serwis jeżeli wymaga zależności zewnętrznych typu clib'y lub inne native.
- Image z binarkami skompilowanej usługi.
Dzięki takiemu podziałowi tworzenie obrazu ostatniego poziomu jest ultra szybkie (dorzucamy jar'ek i już). Podczas gdy 3 pierwsze etapy mogą być bardzo kosztowne np. ktoś może sobie toolkit do tworzenia pdf'ów instalować lub jakieś custom liby do obliczeń numerycznych co zawsze długo trwa.
Im większa firma i większe potrzeby tym drzewo obrazów będzie bardziej skomplikowane.
- Rejestracja:około 7 lat
- Ostatnio:23 minuty
- Postów:866
Bez sensu IMO. Jak ktoś naprawdę chce zoptymalizować rozmiar obrazu to:
- idzie w
distroless
/alpine
/ inne podobne rozwiązania - buduje swój kod w taki sposób, żeby zajmował mało miejsca np. statycznie buildy, odchudzone bazowe obrazy (dla interpretowanych języków jak Python/Java), flagi kompilatora zmniejszające rozmiar
- dba o odchudzony rozmiar wszystkich zewnętrznych zależności
- umie używać multistage buildów i generalnie wszystkiego co sprawia, że końcowy obraz nie zawiera śmieci
Rozwiązanie z szukaniem części wspólnych ma sens, ale to łagodzenie objawów a nie leczenie choroby
Klaudia Balicka napisał(a):
chce aby przy tworzeniu obrazu dockera nie pobierał od nowa wszystkich paczek tylko sprawdzil i wykorzystał te które już są na systemie operacyjnym, aby ich nie duplikowal, dzięki czemu zmniejszy się rozmiar obrazu dockera.
To robisz multi stage build i do ostatecznego obrazu kopiujesz to co jest konieczne.