Wpis z mikrobloga

@yras8: do utrzymania zależności i wygody odpalania tej aplikacji gdziekolwiek.

Jak nie wiesz po co Ci, to możesz go wcale nie potrzebować. Ale sporo upraszcza, szczególnie gdy chcesz korzystać z najnowszych wersji modułów Pythonowych które mogą wymagać np. nowszego Pythona czy jakiejś biblioteki systemowej której nie ma (i nie będzie) w Twoim systemie.
  • Odpowiedz
@yras8: python to szalona technologia: zainstalowanie odpowiedniej wersji i wszystkich zależności jest czasami problematyczne, dlatego wpakowanie wszystkiego do dockera ma sens, bo masz reprodukowalne środowisko
  • Odpowiedz
le ta aplikacja będzie wrzucona na jakiś hosting po prostu...


@yras8: Chyba chodzi o to, że możesz chcieć to zainstalować na innym serwerze, który w domyśle może nie mieć ustawień, których potrzebujesz
  • Odpowiedz
@yras8: wyobraż sobie system, gdzie nie ma innej opcji na dostanie pożądanej wersji pythonia niż kompilacja ze źródeł. Albo bibliotekę, która kompiluje jakiś natywny kod, co bardzo często lubi się wywalać z najróżniejszych powodów. Docker zapewnia ci pewną powtarzalność środowiska
  • Odpowiedz
@yras8: Jak stawiasz modele ML, to szybko się przekonasz do dockera, kiedy po raz dziesiąty będziesz rozkminiał, czemu ten kod działa tylko na wersji X pythona, wersji Y liba, z CUDA w wersji Z oraz sterownikiem karty graficznej w wersji W ( ͡° ͜ʖ ͡°)

Ale w samym działaniu, jak już działa, to docker nic nie daje.
  • Odpowiedz
@yras8: tak jak koledzy(/koleżanki?) wyżej napisali, docker nie ma nic do flaska, są na innym poziomie. A jeśli tego nie rozumiesz, to polecam po prostu chwilę poczytać lub obejrzeć jakiekolwiek introduction to docker/containers - parę minut i wątpliwości powinny się rozwiać.

A jeśli będziesz robił jakieś ML w kontenerze i chciał wykorzystać GPU, przygotuj się na trochę szukania jak wszystko ogarnąć żeby kod rzeczywiście mógł widzieć i wykorzystywać kartę (np.
  • Odpowiedz
@yras8: generalnie Docker i konteneryzacja to część idei infrastruktury jako kod (infrastructure as a code). Inny typ narzędzia iac to np. Terraform. Ogólny zarys jest taki, że dzięki podejściu IAC otrzymujesz szereg zalet i mniejszy ból głowy w razie poważnych awarii i inne. Oczywiście, żeby w pełni zacząć odczuwać zalety tego podejścia to trzeba wprowadzić szereg autmatyzacji (deploy, orkiestracja, etc).
Główne zalety:
- łatwiejsza skalowalność aplikacji,
- podczas samego developmentu
  • Odpowiedz