To nie jest pytanie, co to jest kontener, jak działa i jak się konfiguruje, na to pytanie można znaleźć odpowiedź bez większego problemu.
Natomiast to jest pytanie, gdzie znajduje praktyczne zastosowanie i jaką ma przewagę nad rozwiązaniami wieloplatformowymi lub z możliwością łatwego dostosowania?
Najbardziej podstawową przewagą kontenerów nad VM, jest ich wielkość. Na tej samej maszynie odpalisz więcej kontenerów, niż VM,
Jak potrzebuję napisać program działający na wielu komputerach z różnymi systemami operacyjnymi, to skorzystam z technologii wieloplatformowej, bardzo popularną technologią jest Java. Technologii wieloplatformowej jest tak dużo, że jest w czym wybierać i zmiana Windows na Linux lub odwrotnie nie stanowi większego problemu w wielu przypadkach.
Wieloplatformowość jest skutkiem ubocznym, nie celem. Plusem jest to, że jesteś w stanie ten sam obraz kontenera, z wszystkimi ustawionymi tam zmiennymi systemowymi, konfiguracjami odpalić w wielu różnych miejscach.
Jak potrzebuję zmienić komputer, na którym pracuje program, to na nowym komputerze instaluję to, co potrzebuję i już. Jeżeli jest to dość częsta czynność, to w niektórych przypadkach da się zrobić skrypt, który uruchomiony poinstaluje i pokonfiguruje wszystko, co potrzeba. Taka sytuacja zachodzi, jak mam aplikację webową z bazą danych i chce zmienić hosting, po prostu kopiuję bazę danych do pliku, przenoszę wszystko, a na nowym hostingu instaluję serwer baz danych, wgrywam dane, i program i śmiga.
Ile zajmie ci to konfigurowanie? Albo postawienie środowiska testowego? W jaki sposób sprawisz, że to co przetestowałeś, jest dokładnie tym samym co pójdzie na produkcję? Akurat stawianie baz danych w kontenerach, to trochę bardziej złożone zagadnienie.
Podobnie, jak jest np. firma, w której na kilkudziesięciu komputerach trzeba zaisntalować i skonfigurować program.
Do tego (aplikacje desktopowe) kontenery nadają się trochę słabo.
Z tego, co czytałem, kontener to takie w dużym skrócie coś prostszego od maszyny wirtualnej (nie ma wirtualizacji całego sprzętu, jest tylko system operacyjny). Jego zaletą jest to, że chcąc przenieść z komputera na komputer, po prostu kopiuję cały kontener, podobnie, jak z maszyną wirtualną.
Tak, tylko potrzebujesz mniej tych komputerów do uruchomienia 100 kontenerów, niż potrzebowałbyś do uruchomienia 100 VM.
Patrząc po tematach na forum, kontenery to rzecz bardzo popularna (często jest mowa o Docker i Kubernetes), w takim razie zapytam: Do jakich aplikacji i gdzie znajdują zastosowanie. Chodzi głównie takie prawdziwe, np. w firmach. Nie chodzi o to, że ktoś zainstaluje sobie Dockera czy Kubernetes i się bawi, patrzy jak to działa.
Mikroserwisy. Jak masz system skłądający się z iluśtam dziesięciu usług, z których część może się skalować horyzontalnie (kilka instancji tej samej usługi), to bardzo ciężko to zrobić bez kontenerów. Druga sprawa - wygoda użycia. Potrzebujesz linuksa z Javą 11 i uruchomioną na tym twoją aqplikacją? Piszesz plik konfiguracyjny na 5 linijek, odpalasz dockera, obraz sam się pobierze z publicznego repozytorium, dockerfile ustawi to co trzeba ustawić, następnie skopiuje twoją aplikację i ją uruchomi. To jest dosłownie 5 minut roboty w takim prostym przypadku. W ramach eksperymentu, zrób prostą stronkę html, następnie zmierz sobie czas jaki zajmie ci Postawienie od zera wirtualki, na tej wirtualce serwera https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/amo działanie używając kontenera. Tutaj masz opisane jak to zrobić: https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/ Myślę, że zrozumiesz na czym polega zaleta konteneryzacji.
Instalacja różnych bibliotek, jak JRE, DotNet, system bazy danych to z jednej strony niewzdzięczna, ale niezbędna czynność, ale z drugiej strony wykonuje się od czasu do czasu, więc to nie problem.
Niby te kombajny fajne, ale od pokoleń kosimy, zbieramy i młócimy i to nie problem.
Załóżmy, że mam system Linux, a potrzebuję uruchomić aplikację w Windows. Skorzystam z prawdziwej maszyny wirtualnej w tym celu. Czy kontener też się do tego nadaje? Z tego co czytałem i rozumiem to tak i to jeszcze z lepszą wydajnością (brak wirtualizacji).
VM to obsłuży, kontener nie. W drugą stronę potencjalnie coś by się dało zrobić, ale też jest to raczej nadmierna gimnastyka. Kontener właściwie z definicji wystawia na zewnątrz jakieś tam porty i to wszystko.
Czy kontener zapewnia wyizolowane środowisko tak, że jak wewnątrz kontenera zainstaluję wirusa, to on może co najwyżej zniszczyć zawartość kontenera, a danych systemu hosta nie ruszy?
Pomijając czaasmi odkrywane podatności jest to prawda
Do jakich aplikacji najczęściej są używane kontenery? Destkopowe, konsolowe, webowe, może jeszcze inne?
Webowe. Konsolowe - jeszcze jakoś się da, desktopowe - zapomnij.