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?
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.
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.
Podobnie, jak jest np. firma, w której na kilkudziesięciu komputerach trzeba zaisntalować i skonfigurować program.
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ą.
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.
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.
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).
A jeżeli program działa na Windows i na 99% nie przewiduje się uruchamiania na Linux, to przy zmianie komputera lub aktualizacji systemu program i tak zadziała bez dodatkowych zabiegów.
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?
Do jakich aplikacji najczęściej są używane kontenery? Destkopowe, konsolowe, webowe, może jeszcze inne?