Myślę, że wasz hejt na Dockera bierze się z niezrozumienia jednej bardzo istotnej kwestii - dlatego ją napiszę explicite już na samym początku - *Docker jest narzędziem stworzonym dla developerów, nie dla sysadminów*.
Ja bym się do tego pytania dołączył i je rozszerzył na "dlaczego nagle
ludzie oszaleli na punkcie tego dockera?". Seriously, widziałem artykuły
w wielu portalach netowych o tym, wychwalające że to nowa "najlepsza"
metoda deploymentu softu na pingwina i (n+1 raz), że rpmy itp systemy
paczek są złe i umrą, a wszystko pisane z perspektywy jakiegoś głupiego
pseudo developera piszącego całe życie na windowsy i usiłującego
przenieść tą mentalność do naszego systemu.
Artykuły mają tendencję do hiperbolizowania, ale z drugiej strony, Ty teraz też hiperbolizujesz i strasznie hate'ujesz na windowsowych developerów. Z racji dorastania jako takowy grzecznie poinformuję, że to są developerzy tacy sami jak inni i mają więcej wspólnego z developerami *nixów, niż któryś z nich z użytkownikami systemu, na który developują.
Koniec końców, żeby mi nikt nie zarzucił że hateuję bez powodu to
postanowiłem to poznać. Poczytałem co na oficjalnej stronce piszą,
wypróbowałem emulowane środowisko tutorialowe i dopiero wtedy zobaczyłem
jak wielkie to zło może być. To powoduje instalowanie setek megabajtów
lub i więcej kawałków obcych dystrybucji (głównie zło-buntu z tego co
widziałem), bez jakiegokolwiek planu na security update tych pośrednich
paczek i kompletnie poza managerem paczek natywnego distro, o
potencjalnych problemach wynikających z takiej hybrydy nie wspomnę (i
wewnętrznego fuj jakie normalne distro będzie miało po zainstalowaniu w
nim fragmentów zło-buntu).
1. "Setki megabajtów lub więcej" - a w zasadzie tylko setki megabajtów, bo bazowy image Ubuntu waży jakieś 60 - instalują się tylko raz. Docker commituje każdą instrukcję w Dockerfile i trzyma różnice filesystemu, więc dociągane są tylko delty w miejscach, w których coś w konfiguracji zmienisz.
2. Jak kompletnie poza package managerami skoro używasz package managera do instalacji tych paczek?
3. Cała idea izolacji systemów od siebie polega na tym, że nie instalujesz "fragmentów zło-buntu" w "normalnym distro".
Zgodzę się, że rpmy i podobne tworzy się morderczo ciężko i że może być
trochę zachodu, żeby zebrać wszystkie potrzebne libki na przestrzeni
kilku dużych distro, które chce się supportować jeśli chce się po prostu
zipa z binarką i libkami zrobić (doświadczyłem tego osobiście jak
chciałem niedawno przygotować love2d do spakowania, żeby chodziło na
suse, fedorze i debianie, jak wszystkie libki z suse miałem przygotowane
to okazało się, że fedora potrzebuje z 10 dodatkowych więcej), ale ten
cały docker to nie jest rozwiązanie, a co najwyżej taśma klejąca IMO.
Oh well. Widzisz, a na Windowsie wystarczy tylko zbundlować brakujące DLLki and you can call it a day :P.
Chętnie usłyszę argmenty przeciwko powyższej tezie, ale pod warunkiem,
że nie będą podszyte windowsową mentalnością, że dev chce zrobić raz
binarkę i jej nigdzie nie testować poza swoją własną maszyną.
To, co Ty nazywasz "Windowsową mentalnością" developer nazwie normalną pracą i zdroworozsądkowym podejściem.
Wracając więc do mojej głównej myśli - Docker jest stworzony z myślą o developerach. Innym podobnym narzędziem jest Vagrant. Vagrant rozwiązuje problem "chcemy, żeby developerzy mogli pracować nad systemem lokalnie, i żeby u każdego developera projekt działał out of the box, identycznie jak na serwerze testowym i produkcyjnym". Docker jest rozwiązaniem problemu "maszyny wirtualne są za ciężkie", a jego część internetowa rozwiązuje problem "wszyscy i tak używają z grubsza takich samych konfiguracji bazowych, to po co wszyscy mamy pisać od nowa te same configi, żeby wgrać głupiego Apacha?".
Ogólnie Vagrant i Docker zajmują się eliminowaniem sysadminki (czy jak teraz hipstery mawiają, devopsu).
Jeśli sysadmin będzie brał 4zł za godzinę, to bardzo chętnie zrezygnuję z Dockera i Vagranta, i przejdę na LXC, super-zarządzane, Stallman-approved Archgetnoo - ale nie zamierzam tego dotykać nawet dwumetrowym kijem. Sysadmin jest dla mnie mięsną implementacją Dockera - i jak będzie kosztował tyle co piwo, to bardzo chętnie zrezygnuję i z Ubuntu na maszynie, na której pracuję. Ale póki co mam ciekawsze rzeczy do roboty niż stałe babranie się w internalsach Linuxa i wydłużanie swojego e-penisa drogą rekompilacji jąder. Jestem programistą, nie sysadminem.
Swoją drogą, piszesz o zło-buntu. Ja wiem, że hate na Ubuntu jest świetnym applause light i zapewne dostaniesz jeszcze brawa, jakie z tego tytułu Ci przysługują, ale spójrzmy na kilka ciekawostek:
- Ubuntu jest nr 1 systemem dla normalnego usera jako alternatywa Windowsa,
- Ubuntu zdaje się być nr 1 systemem dla (web)developerów jako alternatywa dla Maca,
- Razem z Debianem są standardową odpowiedzią na pytanie "co postawić na VPSie, żeby deployować webappkę",
- Jest tak unsecurer wielkim złem, że był chyba jedynym (obok Debiana) systemem, co do którego wszyscy byli absolutnie, pozytywnie pewni, że jest odporny na ShellShock.
Znów, nie jest to dobry system dla sysadmina / osób lubiących OS porn, ale jest idealny dla zwykłych użytkowników i dla developerów.
BTW. z tej bardziej "socjalnej" części Dockera wyrósł Sandstorm - https://sandstorm.io/ - polecam obczaić; jest to pierwsze sensowne rozwiązanie na problem Molocha zapędzającego wszystkich do chmury.